2016-05-13 146 views
1

我试图让节点/快递发送肥皂请求到独立服务器。节点SOAP客户端连接到InDesign服务器

发布来自Soap.ui或Postman的请求可以正常工作。在浏览器错误中加载“肥皂”页面。

我也尝试了新的节点客户端和一些示例脚本,他们的工作,所以安装应该没问题。

这是我到目前为止有:

router.get('/soap', function(req, res, next) { 

     var url = 'http://<server_ip>:8088/service?wsdl'; 

     var args = { "IDSP:RunScriptParameters" : 
         { 'scriptLanguage': 'javascript', 
          'scriptFile': 'C:/indesign_scripts/test.jsx' 
         } 
        }; 


     soap.createClient(url, function(err, client){ 
      client.Service.Service.RunScript(args, function(err, result) { 
      if (err) console.log(err); 
      console.log(result); 
      }); 
    }); 

client.describe()返回:

{ Service: 
    { Service: 
     { RunScript: [Object], 
     BeginSession: [Object], 
     EndSession: [Object] } } } 

我尝试使用了RunScript对象。 。

client.describe()Service.Service.RunScript:

{ input: 
    { runScriptParameters: 
     { scriptText: 'xsd:string', 
     scriptLanguage: 'xsd:string', 
     scriptFile: 'xsd:string', 
     'scriptArgs[]': [Object], 
     targetNSAlias: 'IDSP', 
     targetNamespace: 'http://ns.adobe.com/InDesign/soap/' } }, 
    output: 
    { errorNumber: 'xsd:int', 
    errorString: 'xsd:string', 
    scriptResult: 
     { data: 'xsd:anyType', 
     targetNSAlias: 'IDSP', 
     targetNamespace: 'http://ns.adobe.com/InDesign/soap/' } } } 

控制台显示此错误:

[Error: connect ECONNREFUSED 127.0.0.1:8088] 
    code: 'ECONNREFUSED', 
    errno: 'ECONNREFUSED', 
    syscall: 'connect', 
    address: '127.0.0.1', 
    port: 8088 } 

排版服务器WSDL可以看这里:

https://gist.github.com/tomtaylor/1034317

我怀疑这是args可变格式的东西。

+0

的Adobe论坛可能有一个答案,但现在已经下降了一天。 –

回答

0

我试图在我的应用程序文件的头文件中添加“Access-Control-Allow-Origin”,正如@Chirdeep Tomar所建议的,但我仍然收到相同的错误。

我想出的解决方法是使用http请求或卷曲为ajax后。

与请求的例子:

var express = require('express'); 
var request = require('request'); 
var parser = require('xml2json'); 
var router = express.Router(); 

router.get('/ProductionBooks/:id', function(req, res) { 

    var myId = req.params.id; 

    var myBody = '<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:soap="http://ns.adobe.com/InDesign/soap/"><soapenv:Body>' 
        +'<soap:RunScript>' 
        +'<runScriptParameters>' 
        +'<scriptLanguage>javascript</scriptLanguage>' 
        +'<scriptFile>C:/indesign_scripts/test.jsx</scriptFile>'         
        +'</runScriptParameters>' 
        +'</soap:RunScript>' 
        +'</soapenv:Body>' 
        +'</soapenv:Envelope>'; 

     request({ 
        url: 'http://192.168.0.129:8088', //URL to hit 
        method: 'POST', 
        headers: { 
         'Content-Type': 'application/xml', 
         'Content-Length': Buffer.byteLength(myBody) 
        }, 
        body: myBody 

       }, function(error, response, body){ 
        if(error) { 
         console.log(error); 
        } else { 
         console.log(response.statusCode + '\n'); 
         var objJSON = JSON.parse(parser.toJson(body)); 
         console.log(objJSON['SOAP-ENV:Envelope']['SOAP-ENV:Body']['IDSP:RunScriptResponse'].errorNumber); 
       } 
       }); 

       res.end(); 
}); 

例,卷曲:

var curl = require("curl"); 
curl.post(url, soapBody, options, function(err, response, body) { 
    try { 
     console.log(response.body); 
    } 
    catch (err) { 
     console.log(err); 
    } 
}); 

res.end(); 

}); 
0

您可以通过增加线下解决这个问题

client.setEndpoint('http://<server_ip>:8088');