Ich versuche, einen SOAP Webservice zu konsumieren, aber die WSDL ist irgendwie kaputt, also muss ich einige Anpassungen an node-soap
vornehmen.Wie kann ich die Verwendung des Namespace-Präfixes erzwingen?
Der ideale SOAP-Umschlag, die Ich mag würde würde haben sein diese:
<Envelope xmlns="http://schemas.xmlsoap.org/soap/envelope/">
<Body>
<getImagesDefinition xmlns="http://services.example.com/"/>
</Body>
</Envelope>
Bisher ist dies die nodejs
Code, den ich den Dienst aufzurufen haben:
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)
});
Ich musste Stellen Sie den Endpunkt manuell ein, da er in der WSDL
Datei
unterbrochen ist Die Umschlag, den ich beim Drucken client.lastRequest
bekomme, ist dies:
<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>
Ich weiß, dass, wenn ich das Namespacepräfix auf dem Körper <tns:getImagesDefinition />
zu haben, anstatt die Anforderung von <getImagesDefinition />
zwingen kann, funktioniert perfekt.
Gibt es eine Möglichkeit für mich, es zu erzwingen?
las ich in der Dokumentation zu sagen, dass tns
ein Standard-Namespace ignoriert, so dass ich versuchte, dass dadurch zu ändern:
var options = {
ignoredNamespaces: {
namespaces: [],
override: true
}
}
und sendet dieses Objekt an die soap.createClient
Methode, aber ich sehe keinen Unterschied auf die Briefumschlag.
Gibt es trotzdem für mich das zu erzwingen? oder zum idealen SOAP Envelope?
Danke!
Temporäre Lösung: Ändern Sie die Zeile 1047 in wsdl.js in: 'WSDL.prototype.ignoredNamespaces = ['targetNamespace', 'typedNamespace'];' –
Diese Verknüpfung ist unterbrochen. Kannst du bitte etwas ausarbeiten? – analytik
Aus diesem Grund sind Antworten, die nur Links enthalten, nicht hilfreich – Trev