2009-10-06 12 views
5

Sto provando a collegarmi a un servizio Web SOAP di terze parti. Sembra che il servizio possa funzionare quando l'intestazione HTTP SOAPAction è una stringa vuota (""). Questo è il frammento di wsdl:Problema di Axis2 nell'impostazione dell'intestazione HTTP SOAPAction

<wsdl:binding name="detailsRequestMessage" type="tns:UssdPortType"> 
    <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/> 
    <wsdl:operation name="details"> 
     <soap:operation soapAction=""/> 
     <wsdl:input> 
      <soap:body use="literal"/> 
     </wsdl:input> 
     <wsdl:output> 
      <soap:body use="literal"/> 
     </wsdl:output> 
    </wsdl:operation> 
</wsdl:binding> 

Dove si vede il soapAction = ""

ho generato un l'Axis2 (1.5) WSDL2Java stubusing.

ero sperando ottenere le seguenti (l'uscita di successo quando si esegue con SoapUI):

POST /details HTTP/1.1 
Accept-Encoding: gzip,deflate 
Content-Type: text/xml;charset=UTF-8 
SOAPAction: "" 
User-Agent: Jakarta Commons-HttpClient/3.1 
Host: some.host 
Content-Length: 323 

Ma invece sto ottenendo:

POST /details HTTP/1.1 
Content-Type: text/xml; charset=UTF-8 
SOAPAction: "http://some.url/wsussd/ussdtypes/UssdPortType/detailsRequest" 
User-Agent: Axis2 
Host: some.host 
Content-Length: 300 

Qualcuno ha Qualche idea su quale sia il problema o come faccio a impostare soapAction nel programma.

Grazie, Ronen

risposta

1

Date un'occhiata al la risposta a this question ... si può essere in grado di trovare un codice simile nei tuoi stub generati.

Se questo è il caso, allora penso che si può impostare l'azione (in base al API):

serviceClient = new RPCServiceClient(); 
Options options = serviceClient.getOptions(); 
options.setAction(""); 

Penso che l'azione è gestita in modo diverso a seconda della versione SOAP. Per specificare una versione diversa:

options.setSoapVersionURI(
    org.apache.axiom.soap.SOAP11Constants.SOAP_ENVELOPE_NAMESPACE_URI); 

(o la versione SOAP12 della costante).

Spero che questo aiuti.

+0

ho provato senza fortuna. la cosa che ha fatto è stato impostare le proprietà dell'opzione. Grazie – rperez

4

rperez non era del tutto chiaro con la sua risposta. Ho trovato https://issues.apache.org/jira/browse/AXIS2-4264 che rivendica il problema è stato risolto in 1.6.0, ma ho ancora problemi al punto 1.6.2

Tuttavia, questo funziona:

stub._getServiceClient().getOptions().setProperty(org.apache.axis2.Constants.Configuration.DISABLE_SOAP_ACTION, true); 
Problemi correlati