如何使用Soap和Node.js向chronopost发出运输请求

时间:2018-07-05 12:03:55

标签: node.js soap shipping

我很难用node-soap和chronopost(运输平台)soap api发出简单的请求。

我要做的第一件事是遵循基本的节点肥皂示例,但是它却不幸地失败了,而没有来自chronopost的任何实际的有用错误。

肥皂和java ...我讨厌。

这就是我得到的:

const soap = require('soap')

const client = await soap.createClientAsync(
  'https://ws.chronopost.fr/shipping-cxf/ShippingServiceWS?wsdl'
)

client.shippingV6(...somedata, (err, result) => {
  if (err) {
    return handleErr(); // it always fails
  }
  handleResult();
})

1 个答案:

答案 0 :(得分:0)

经过多次尝试后,chronopost api似乎使用了特殊的根属性(谁知道为什么),并且您需要在节点肥皂上实际选择适合其需求的选项(是..)

这是对我有用的

const createClientShippingServiceWS = async () => {
  const wsdlOptions = {
    envelopeKey: 'soapenv',
    overrideRootElement: {
      namespace: 'cxf',
      xmlnsAttributes: [
        {
          name: 'xmlns:cxf',
          value: 'http://cxf.shipping.soap.chronopost.fr/'
        }
      ]
    }
  }

  return await soap.createClientAsync(
    'https://ws.chronopost.fr/shipping-cxf/ShippingServiceWS?wsdl',
    wsdlOptions
  )
}

如果node-soap无法确定如何做出响应,那么获取wsdl有什么意义呢?

感谢chronopost被困在2008年