2016-05-13 6 views
1

Я пытаюсь получить node/express для отправки запроса на мыло для сервера indesign.Node SOAP клиент для подключения к InDesign Server

Отправка запроса от 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 } 

Indesign Сервер может 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'); 

 Смежные вопросы

  • Нет связанных вопросов^_^