2017-11-10 3 views
0

ノードを使用してSOAP Webサービスを呼び出そうとしています。私は石鹸を使用してパッケージを要求しています。以下は'Async'-サフィックスを持つ通常のメソッドを持つAPIを宣言できません。

は、コードスニペットです:

var express = require('express'); 
var Promise = require("bluebird"); 
var app = express(); 
var soap = require('soap') 

var url = 'http://example.com?WSDL'; 
let request = require('request'); 
let request_with_defaults = request.defaults({ 
    'proxy': 'http://example.com:80', 
    'timeout': 5000, 
    'connection': 'keep-alive' 
}); 
let soap_client_options = { 
    'request': request_with_defaults 
}; 
var args = { 
    requestId: '1406303' 
}; 
soap.createClient(url, soap_client_options, function(err, client) { 
    var soapHeader = { 
    "Username": "test", 
    "Password" : "test" 
    }; 
    client.addSoapHeader(soapHeader); 

    client.getESSJobStatus(args, function(err, result) { 
    if(err){ 
     console.log('Error occured'); 
    } 
    console.log(result); 
    }); 
}) 

ここで私はエラーを取得しています:

throw new TypeError("Cannot promisify an API that has normal methods with '%s'-suffix\u000a\u000a See http://bluebirdjs.com/docs/error-explanations.htmlX\u000a" 
TypeError: Cannot promisify an API that has normal methods with 'Async'-suffix 
See http://bluebirdjs.com/docs/error-explanations.html 

私はこのURLをチェックしています。非同期タスクが作成され、呼び出すことができないということです。しかし、私はこれを関連付けることはできません。

誰でも私にこの問題を解決する方法を教えてもらえますか?

+0

を試してみてください - あなたはおそらく' overridePromiseSuffix *「石鹸」のドキュメントを読んで –

+1

を掲載してPromisifyのないヒントがコードにありません。あなたの場合「何とか」: - https://www.npmjs.com/package/soap –

+0

追加してみてください 'overridePromiseSuffix Async' *:WSDL操作は非同期サフィックスを持つ名前が含まれ、カスタム1、デフォルトにデフォルトの約束の接尾辞を上書きする必要があります。 'またはあなたの' soap_client_options'に何でも –

答えて

0

`非同期タスクは全くそうではないんcreated`ますと言っているPromise.promisifyAll(require('soap'), {suffix: 'MySuffix'});

関連する問題