1

我在 http://{{URL}}/web/wsGlbSSL.asmx?WSDL 中使用 SOAP WS 该函数是 GetResultSQL,它需要参数。

例如,当我使用 Google Chrome 应用程序执行此操作时,呼叫完美通过:

<x:Envelope xmlns:x="http://schemas.xmlsoap.org/soap/envelope/" xmlns:br="http://URL/br/">
<x:Header/>
<x:Body>
    <br:GetResultSQL>
        <br:codUsuario>BLA</br:codUsuario>
        <br:senha>BLABLA</br:senha>
        <br:codColigada>0</br:codColigada>
        <br:codAplicacao>V</br:codAplicacao>
        <br:codSentenca>BLABLI</br:codSentenca>
        <br:xmlParamsValue><![CDATA[<PARAM><EMAIL>teste@email.com</EMAIL></PARAM>]]></br:xmlParamsValue>
        <br:schema>false</br:schema>
    </br:GetResultSQL>
</x:Body>

但是使用 node js node-soap 我无法使其工作

var url = 'http://{{URL}}/web/wsGlbSSL.asmx?WSDL';
var args = {
codUsuario: "BLA"
,senha : "BLABLA"
,codColigada: "0"
,codAplicacao: "V"
,codSentenca: "BLABLI"
,xmlParamsValue: "<![CDATA[<PARAM><EMAIL>teste@email.com</EMAIL></PARAM>]]>"
,schema: "false"
};
soap.createClient(url, args, function(err, client) {
    if(err){ 
        console.log(err);
        console.log('########## Erro ao criar cliente ##########');
        return;
    }
    client.GetResultSQL(args, function(err, result) {
        if(err){ 
            console.log(err); //this is always thrown
            console.log('########## Erro ao consumir servico ##########');
            return;
        }
        console.log(result);
    });
});

它给了我同样的错误,就好像我在 chrome 应用程序的参数上传递了错误一样。“无法将 XML 转换为对象数据集”。

4

1 回答 1

0

好的,发现它是什么。Soap-node 不支持 CDATA,所以我对其进行了编辑以处理我的 CDATA。

于 2016-04-13T16:47:24.310 回答