2016-05-13 147 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');