Sto provando a consumare un servizio Web SOAP, ma il WSDL è un po 'guasto, quindi devo fare un po' di personalizzazione su node-soap
.Come posso forzare l'uso del prefisso dello spazio dei nomi?
La Busta SOAP ideale che mi piacerebbe avere sarebbe questo uno:
<Envelope xmlns="http://schemas.xmlsoap.org/soap/envelope/">
<Body>
<getImagesDefinition xmlns="http://services.example.com/"/>
</Body>
</Envelope>
Finora questo è il codice nodejs
devo richiamare il servizio:
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)
});
ho dovuto imposta manualmente l'endpoint perché è rotto nel file WSDL
La busta che ottengo quando si stampa client.lastRequest
è questa:
<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>
so che se riesco a forzare il prefisso dello spazio dei nomi sul corpo di avere <tns:getImagesDefinition />
invece di <getImagesDefinition />
richiesta funziona perfettamente.
C'è un modo per costringerlo?
Ho letto la documentazione dicendo che tns
è uno spazio dei nomi di default ignorato, così ho cercato di cambiare la situazione in questo modo:
var options = {
ignoredNamespaces: {
namespaces: [],
override: true
}
}
e l'invio di tale oggetto al metodo soap.createClient
, ma non vedo alcuna differenza sulla Busta.
C'è comunque un modo per forzare questo? o arrivare alla busta SOAP ideale?
Grazie!
Correzione temporanea: modificare la riga 1047 in wsdl.js in: 'WSDL.prototype.ignoredNamespaces = ['targetNamespace', 'typedNamespace'];' –
Il collegamento è interrotto. Puoi per favore elaborare? – analytik
Ecco perché le risposte che contengono solo collegamenti non sono utili – Trev