2011-08-12 25 views
2

我試圖用這個包的問題:https://github.com/milewise/node-soap的Node.js - 使用SOAP庫

然而,當我這樣做:

var soap = require('soap'); 
var url = 'http://example.com/wsdl?wsdl'; 
var args = {name: 'value'}; 
soap.createClient(url, function(err, client) { 
    client.MyFunction(args, function(err, result) { 
     console.log(result); 
    }); 
}); 

它返回: 「未定義」。

我的問題是我不明白什麼時候說「args」。它與WDSL中的節點有關嗎?

的WSDL文件如下:

<xsd:element name="getAllMarkets"> 
    <xsd:complexType> 
    <xsd:sequence> 
     <xsd:element name="request" type="types:GetAllMarketsReq"/> 
    </xsd:sequence> 
    </xsd:complexType> 
</xsd:element> 

請幫助。謝謝。

+1

我不得不修補soap.js讓它在必發API工作,但它是一個非常醜陋的黑客。希望在這裏看到一些更好的解決方案。 – mak

+0

補丁是什麼? – Ron

回答

2

您正在記錄result,這可能是未定義的,因爲存在錯誤,這意味着您的回調函數的參數被定義並且將爲您提供信息。在這種情況下,因爲它看起來像你打電話MyFunction而不是getAllMarkets,你的錯誤可能會是某種「未知方法」錯誤。做console.log(err, result);,看看打印出來的是什麼。

+0

應將args替換爲匹配{「request」:GetAllMarketsReq}結構的對象,並調用正確的方法。 – Tracker1

2

,而不是這個

var args = {name: 'value'}; 

試試這個

var args = {'tns:name': 'value'}; 

它爲我工作。

0

嘗試

var args = { request: { name: 'value' } };