2012-10-28 54 views
0

我試圖利用node-soap來創建一個包含數組的SOAP請求。沒有數組的請求似乎工作正常,但是當嘗試傳遞數組時,我收到來自服務器的錯誤「不是ARRAY引用」。node-soap中的數組

有什麼想法?我的腳本如下:

var soap = require('soap'); 

var url = 'http://example.com/example.wsdl'; 

var args = { 
    email: 'example', 
    password: 'xxxxx', 
    series: { 
     element: ['a', 'b', 'c', 'd'] 
    } 
}; 

soap.createClient(url, function(err, client) { 
    if(err) throw err; 

    client.ExampleMethod(args, function(err, result) { 
     if(err) throw err; 
     console.log(result); 
    }); 
}); 
+0

你解決了嗎? –

+0

@ Mr.Robot當我五年前第一次發佈這個問題時,我放棄了。 'node-soap' simple在當時還不夠成熟。我從未使用SOAP,所以我不能再證明包的成熟。 – Roshambo

回答

2

不知道你調用的代碼是應該做的,但是從名字「系列」只是猜測,你確定了一個名爲「系列」的事情應該包含名爲「元素」的數組,而不是數組?

+1

由於數組最終被重組爲XML請求,因此'element'對象似乎需要作爲包含數組的對象存在,以便設置實際的名稱(',,')。 – Roshambo

2

試試這個:

series: { 
    element: ['a', 'b', 'c', 'd'] 
} 
+0

我做了一些修改(刪除大括號,這些是對象),然後這個作品完美 – Shujito

+0

哦,我注意到,你可以使用單個元素來代替數組:'element:'a'' – Shujito

0

這是目前正在討論over at the GitHub repository (issue #143)

tldr;協作者正試圖確定他們應該如何將JSON轉換爲XML。其中涉及到issue #368

+1

請注意, [只提供鏈接的答案](http://meta.stackoverflow.com/tags/link-only-answers/info),所以答案應該是搜索解決方案的終點(而不是另一箇中途停留的參考文獻,這些參考文獻往往會隨着時間推移而過時)。請考慮在此添加獨立的摘要,並將鏈接保留爲參考。 – kleopatra