2009-10-06 12 views
5

Próbuję połączyć się z usługą stron WWW SOAP po stronie trzeciej. Wygląda na to, że usługa może działać, gdy nagłówek HTTP SOAPAction jest pusty (""). Jest to urywek z WSDL:Problem Axis2 w ustawieniu nagłówka 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> 

Gdzie widzisz SoapAction = ""

I generowane stubusing oś2 (1.5) wsdl2java.

byłem nadzieję aby uzyskać następujący (pomyślne wyjście, gdy uruchomiony z 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 

Ale zamiast otrzymuję:

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 

Czy ktoś ma jakikolwiek pomysł, jaki jest problem lub jak ustawić soapAction w programie.

Dzięki, Ronen

Odpowiedz

1

Wystarczy popatrzeć na odpowiedź na this question ... być może uda się znaleźć podobny kod w swoim generowanych odcinki.

Jeśli o to chodzi, to myślę, że można ustawić działania (zgodnie z API):

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

myślę, że działanie jest traktowane odmiennie w zależności od wersji SOAP. Aby określić inną wersję:

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

(lub wersja stałej SOAP12).

Nadzieję, że pomaga.

+0

Próbowałem że bez powodzenia. rzeczą, która to zrobiła, było ustawienie właściwości opcji. Dzięki – rperez

4

rperez nie do końca był jasny z jego odpowiedzią. znalazłem https://issues.apache.org/jira/browse/AXIS2-4264 który przejmuje problem został rozwiązany w 1.6.0, ale nadal mam problemy 1.6.2

Jednak to działa:

stub._getServiceClient().getOptions().setProperty(org.apache.axis2.Constants.Configuration.DISABLE_SOAP_ACTION, true); 
Powiązane problemy