Domanda

Devo usare un servizio Web di terze parti implementato in .NET 2.0 (su IIS, ovviamente).

Devo creare un client Java. Sto usando wsdl2java per generare lo stub SOAP.

Dato che il progetto originale di Apache Axis ora sembra non mantenuto, e ho riscontrato dei problemi durante l'analisi di alcune risposte dal servizio, ho convertito il client in modo da utilizzare l'ultima versione (1.5) di Axis2. Ora, il servizio .NET non riconoscerà nemmeno le mie richieste.

Sono riuscito a ottenere il " chunking " disattivato (dove "stub" è una variabile di tipo MumbleStub generata da wsdl2java, e sto mostrando quali sono diverse righe di codice come una riga orribile qui):

stub._getServiceClient().getOptions().setProperty( HTTPConstants.CHUNKED, Boolean.FALSE);

.. quindi almeno il servizio riconosce la mia richiesta COME una richiesta, sebbene una cattiva: " HTTP / 1.1 400 Richiesta non valida " è la risposta ora (al contrario di una pagina "introduzione / riepilogo" che mi offre un collegamento al WSDL).

Ho notato che la richiesta Axis (" 1 ") aveva un'intestazione Content-TYpe diversa (testo / xml, vs application / soap-xml) e mi chiedo come modificare questa intestazione di richiesta, se è in fatto il problema.

In alternativa, qualcun altro ha avuto questo problema? Il problema è davvero il (non visualizzabile qui, in quanto sembra "iniezione di elementi" al motore del blog) ... xml version- "quot 1.0" ... " XML meta intro tag " che Axis2 ha aggiunto all'inizio della richiesta?

WS-Deathstar, davvero.

È stato utile?

Soluzione

Mentre menzioni la diversa intestazione del tipo di contenuto, immagino che il tuo client cerchi di inviare richieste SOAP 1.2 e l'app di terze parti capisce solo SOAP 1.1

Prova a cambiare la versione soap utilizzata, poiché AFAIK AXIS2 utilizza SOAP 1.2 per impostazione predefinita

stub._getServiceClient().getOptions().setSoapVersionURI(org.apache.axiom.soap.SOAP11Constants.SOAP_ENVELOPE_NAMESPACE_URI);
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top