Я пытаюсь использовать 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?
Спасибо!