2009-10-06 3 views
5

Я пытаюсь подключиться к 3-й сторонней веб-службе SOAP. Кажется, что служба может работать, когда заголовок HTTP SOAPAction является пустой строкой (""). Это фрагмент из WSDL:Проблема с Axis2 в настройке SOAPAction HTTP-заголовок

<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> 

Где вы видите SOAPAction = ""

Я произвел stubusing Axis2 (1.5) wsdl2java.

я надеясь получить следующее (успешный выход при работе с 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 

Но вместо я получаю:

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 

ли кто-нибудь имеет любая идея, в чем проблема, или как установить soapAction в программе.

Спасибо, Ронен

ответ

1

Посмотрите ответ на this question ... Вы можете быть в состоянии найти подобный код в ваших сгенерированных заглушек.

Если это так, то я думаю, что вы можете установить действие (в соответствии с API):

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

Я думаю, что действие обрабатывается по-разному в зависимости от версии SOAP. Чтобы указать другую версию:

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

(или версия константы SOAP12).

Надеюсь, что это поможет.

+0

Я попробовал, что не повезло. Дело в том, чтобы установить свойства опции. Спасибо – rperez

4

rperez не был полностью ясен с его ответом. я нашел https://issues.apache.org/jira/browse/AXIS2-4264, который утверждает, вопрос был зафиксирован в 1.6.0, но я до сих пор есть проблемы в 1.6.2

Однако, это делает работу:

stub._getServiceClient().getOptions().setProperty(org.apache.axis2.Constants.Configuration.DISABLE_SOAP_ACTION, true); 
Смежные вопросы