1

node-soap を使用してサードパーティの Web サービスに接続しようとしていますが、Web サービスのメソッドを使用するたびに、正しい応答であるデータの代わりに大量のオブジェクトを取得します。

var soap = require('soap');
var soapWSDL = "https://staging.refcheckadvanced.co.za/RefCheck_Integrator/services/v2/RefCheck.svc?wsdl";

soap.createClient(soapWSDL, function (err, client) {
if (err) throw err;
    client.IsHealthy({}, function(err,result) {
        console.log(result);
    });
});

私が間違っていることを誰かが知っていますか?

PHP SOAP エンベロープ:

    <SOAP-ENV:Body>
        <ns1:IsHealthy/>
    </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

ノード SOAP エンベロープ:

    <soap:Body>
        <tns:IsHealthy xmlns:tns="http://tempuri.org/" xmlns="http://tempuri.org/">
        </tns:IsHealthy>
</soap:Body>
</soap:Envelope>

PHP と同じフォーマットを使用するように node-soap を構成する方法はありますか?

4

1 に答える 1

1

wsdl はオンザフライで生成されますか、それとも静的ですか? それは私のために簡単に働いた...

私の応答は次のとおりです。{ IsHealthyResult: '2015/02/03 11:56:48 AM' }

しかし、今、node-soapを試すとエラーがスローされます(これは処理しません)

これを試してみると、(おそらく)err設定されていることがわかります:

soap.createClient(soapWSDL, function (err, client) {
if (err) throw err;
    client.IsHealthy({}, function(err,result) {
        if (err) {
            console.log(err.message);
        } else {
            console.log(result);
        }
    });
});

戻り値:Cannot read property 'Body' of undefined

node-inspector (クロスプラットフォーム) またはNTVS (Windows + Visual Studio)でデバッグしてみてください

node-soap が例外をキャッチ\lib\client.js:183し、コールバックにエラーを設定することがわかります。なぜそれが私にとって簡単に機能したのか、私には手がかりがありません... = P

errただし、コールバックで常にチェックすることを忘れないでください

于 2015-02-03T10:57:04.557 に答える