2009-10-06 20 views
5

Estoy intentando conectarme a un servicio web SOAP de una tercera parte. Parece que el servicio puede funcionar cuando el encabezado HTTP SOAPAction es una cadena vacía (""). Este es el fragmento del WSDL:Problema de Axis2 al establecer el encabezado HTTP de 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> 

donde se ve la soapAction = ""

me genera una la Axis2 (1.5) wsdl2java stubusing.

estaba esperando obtener la siguiente (la salida exitosa cuando se ejecuta 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 

Pero lugar que estoy recibiendo:

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 

¿Alguien tiene Alguna idea de cuál es el problema o cómo configuro soapAction en el programa.

Gracias, Ronen

Respuesta

1

Eche un vistazo a la respuesta a this question ... usted puede ser capaz de encontrar un código similar en sus talones generados.

Si ese es el caso, entonces creo que se puede establecer la acción (de acuerdo con el API):

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

Creo que la acción se maneja de manera diferente dependiendo de la versión de SOAP. Para especificar una versión diferente:

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

(o la versión SOAP12 de la constante).

Espero que ayude.

+0

he intentado sin suerte. lo que lo hizo fue establecer las propiedades de la opción. Gracias – rperez

4

rperez no fue del todo claro con su respuesta. he encontrado https://issues.apache.org/jira/browse/AXIS2-4264 que reivindica el problema se solucionó en 1.6.0, pero todavía tengo problemas en 1.6.2

Sin embargo, esto hace el trabajo:

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