意外的包装元素SOAP wdsl错误

时间:2016-02-19 08:29:09

标签: node.js node-soap

我尝试使用node-soap客户端

向wdsl发送请求

这是我的代码:

var url = 'https://bpm.shaparak.ir/pgwchannel/services/pgw?wsdl';

            soap.createClient(url, function(err, client) {

                var today = new Date();
                var params = {
                    terminalId: "1926577",
                    userName: "test2",
                    userPassword: "test1",
                    orderId: receipt.recieptId + "",
                    amount: parseInt(receipt.overal_price) + "",
                    localDate: today.format('ymd'),
                    localTime: today.format('His'),
                    additionalData: "Customer No: 15220",
                    callBackUrl: "http://test.ir/pay/verify",
                    payerId: parseInt(receipt.user) + ""
                };

                console.log(params);


                client.bpPayRequest(params, function(err, result) {
                    if (err) {
                        throw err;
                    }
                    console.log(result);
                });

并且从wsdl:

返回此错误
  

错误:soap:客户端:发现了意外的包装元素bpPayRequest   预计{http://interfaces.core.sw.bps.com/} bpPayRequest。

似乎没有将ns1添加为

的前缀
  

xml请求中的

节点

我将模块更新到v0.13.0并添加了以下内容:

used this code :
var options = {
                ignoredNamespaces: {
                    namespaces: [],
                    override: true
                }
            }

仍然是同样的错误:(

TEMPORARILY FIX 将此添加到node-soap的wsdl.js文件的第1496行:

name = 'ns1:'+name;

4 个答案:

答案 0 :(得分:4)

使用此:

var options = {
    overrideRootElement: {
        namespace: 'ns1'
    }
};

适用于版本0.16

答案 1 :(得分:2)

与node-soap版本0.14.0存在相同的问题 切换回0.11.0就解决了它。

答案 2 :(得分:0)

从版本0.16.0开始,建议的重置ignoredNamespaces的解决方案再次起作用:

var options = {
  ignoredNamespaces: {
    namespaces: [],
    override: true
  }
}

答案 3 :(得分:0)

在版本0.16.0中,您应该更改第1530行:

WSDL.prototype.objectToDocumentXML = function(name, params, nsPrefix, nsURI, type) {
   var args = {};
   args["ns1:" + name] = params; // instead of args[name] = params;
   ...