SOAP请求在SoapUI中有效,但在Node.js中无效

时间:2019-12-16 13:10:39

标签: javascript node.js soap

我正在尝试使用Node来访问SOAP API。

使用SoapUI,我可以毫无问题地到达它,这是请求:

<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:axis="http://ws.apache.org/axis2">
   <soap:Header/>
   <soap:Body>
      <axis:getKey>
         <!--Optional:-->
         <axis:user>email@email.com</axis:user>
         <!--Optional:-->
         <axis:password>password</axis:password>
      </axis:getKey>
   </soap:Body>
</soap:Envelope>    

但是,使用soap包,每次都会引发错误:无法解析响应。

但是,请求的XML几乎相同:

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ns="http://ws.apache.org/axis2" xmlns:ax21="http://rpc.xml.coldfusion/xsd" xmlns:ns1="http://org.apache.axis2/xsd" xmlns:ax22="http://rpc.xml.coldfusion/xsd">
   <soap:Body>
      <ns:getKey xmlns="http://ws.apache.org/axis2">
         <ns:user>email@email.com</ns:user>
         <ns:password>password</ns:password>
      </ns:getKey>
   </soap:Body>
</soap:Envelope>

我在SoapUI中尝试过,并且运行良好!我不明白为什么会收到错误消息!

这是我的代码:

async method(userData) {
    const wsdl = 'http://www.maxbounty.com/api.cfc?wsdl';
    const client = await soap.createClientAsync(wsdl);
    const test = await client.getKeyAsync({ user: userData.username, password: userData.password });
}

有什么主意吗?

1 个答案:

答案 0 :(得分:1)

我意识到 SoapUI 以不同的方式格式化主体。我复制粘贴了它在我的代码中使用的主体,它的作用就像一个魅力。