我正在尝试使用 SOAP Webservice,但 WSDL 有点损坏,所以我必须对node-soap
.
我想要的理想 SOAP 信封是这个:
<Envelope xmlns="http://schemas.xmlsoap.org/soap/envelope/">
<Body>
<getImagesDefinition xmlns="http://services.example.com/"/>
</Body>
</Envelope>
到目前为止,这是nodejs
我必须调用服务的代码:
var soap = require('soap');
var url = 'http://www.example.com/services/imagesizes?wsdl';
soap.createClient(url, function(err, client) {
client.setEndpoint('http://www.example.com/services/imagesizes');
client.getImagesDefinition(null, function(err, result) {
console.log(result);
});
console.log(client.lastRequest)
});
我不得不手动设置端点,因为它在WSDL
文件中被破坏了
我打印时收到的信封client.lastRequest
是这样的:
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:tns="http://services.example.com/">
<soap:Body>
<getImagesDefinition />
</soap:Body>
</soap:Envelope>
我知道,如果我可以强制主体上的名称空间前缀<tns:getImagesDefinition />
代替<getImagesDefinition />
请求,则可以完美地工作。
有什么办法可以强迫我吗?
我阅读了文档说这tns
是一个默认忽略的命名空间,所以我试图通过这样做来改变它:
var options = {
ignoredNamespaces: {
namespaces: [],
override: true
}
}
并将该对象发送到该soap.createClient
方法,但我在信封上没有发现任何区别。
反正我有强迫这个吗?还是找到理想的 SOAP 信封?
谢谢!