2016-05-13 12 views
1

Ich versuche, Node/Express Soap-Anfrage an Indesign Server zu senden.Node SOAP-Client zum Herstellen einer Verbindung mit InDesign Server

Buchung der Anfrage von Soap.ui oder Postman funktioniert gut. Laden der "Soap" -Seite in die Browserfehler.

Ich habe auch versucht, den Knoten-Client mit ein paar Beispielskripte aus dem neuen und sie funktionieren, so sollte die Installation in Ordnung sein.

Dies ist, was ich bisher:

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() gibt:

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

Ich versuche RunScript Objekt zu verwenden. .

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/' } } } 

Console zeigt diesen Fehler:

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

Indesign Server Wsdl hier eingesehen werden:

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

Ich vermute, das ist etwas mit variablem Format von args.

+0

Adobe Forum eine Antwort haben könnte, aber Das war jetzt einen Tag lang vorbei. –

Antwort

0

Ich habe versucht, "Access-Control-Allow-Origin" zu meinen Kopfzeilen in meiner App-Datei hinzuzufügen, wie von @Chirdeep Tomar vorgeschlagen, aber ich bekomme immer noch die gleichen Fehler.

Die Problemumgehung, die ich kam, war HTTP-Anfrage oder Curl für Ajax Post zu verwenden.

Das Beispiel mit Anfrage:

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(); 
}); 

Beispiel mit Curl:

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

Sie dieses Problem unter

durch Zugabe von Linie beheben
client.setEndpoint('http://<server_ip>:8088'); 
Verwandte Themen