2016-05-13 7 views
1

indesignサーバーにsoap要求を送信するためにnode/expressを取得しようとしています。ノードInDesign Serverに接続するSOAPクライアント

Soap.uiまたはPostmanからのリクエストの投稿はうまく動作します。ブラウザのエラーに「soap」ページを読み込みます。

私はノードクライアントに新しいサンプルスクリプトをいくつか載せて試してみましたので、インストールはOKです。

これは私がこれまで持っているものです。

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:

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

のInDesign ServerのWSDLは、ここで見ることができます:

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

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

コンソールは、このエラーを示します

私はこれがargs可変形式の何かであると思われます。

+0

以下の行を追加することによってこの問題を解決することができますが、これは一日のうちに終わった。 –

答えて

0

@Chirdeep Tomarの示唆しているように、私のアプリケーションファイルのヘッダーに「Access-Control-Allow-Origin」を追加しようとしましたが、同じエラーが発生しています。

私が思いついた解決策は、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

は、Adobeのフォーラムが答えを持っているかもしれません

client.setEndpoint('http://<server_ip>:8088'); 
関連する問題