Reputation: 21
I'm trying to query a WS from IBMIntegrationBus v10 using the SOAPRequest node.
SoapUI has no problems consuming this WS with the following payload:
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:wsg="http://wsgetrama.wsbeans.iseries/" xmlns:wsp="http://www.w3.org/ns/ws-policy" xmlns:wsp1_2="http://schemas.xmlsoap.org/ws/2004/09/policy" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<soapenv:Header/>
<soapenv:Body>
<out:wsgetrama xmlns:out="http://wsgetrama.wsbeans.iseries/">
<arg0>
<PERAMA>1</PERAMA>
<PERAMD>Test</PERAMD>
</arg0>
</out:wsgetrama>
</soapenv:Body>
</soapenv:Envelope>
The raw data is as follows:
POST http://192.168.1.116:10028/web/services/WSGETRAMAService/WSGETRAMA HTTP/1.1
Accept-Encoding: gzip,deflate
Content-Type: text/xml;charset=UTF-8
SOAPAction: ""
Content-Length: 643
Host: 192.168.1.116:10028
Connection: Keep-Alive
User-Agent: Apache-HttpClient/4.1.1 (java 1.5)
I'm trying to consume a WS with the following WSDL:
<definitions xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" xmlns:wsp1_2="http://schemas.xmlsoap.org/ws/2004/09/policy" xmlns:wsp="http://www.w3.org/ns/ws-policy" xmlns:wsam="http://www.w3.org/2007/05/addressing/metadata" xmlns:tns="http://wsgetrama.wsbeans.iseries/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns="http://schemas.xmlsoap.org/wsdl/" name="WSGETRAMA" targetNamespace="http://wsgetrama.wsbeans.iseries/">
<types>
<xs:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" xmlns:wsp1_2="http://schemas.xmlsoap.org/ws/2004/09/policy" xmlns:wsp="http://www.w3.org/ns/ws-policy" xmlns:wsam="http://www.w3.org/2007/05/addressing/metadata" xmlns:tns="http://wsgetrama.wsbeans.iseries/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns="http://schemas.xmlsoap.org/wsdl/" targetNamespace="http://wsgetrama.wsbeans.iseries/" version="1.0">
<xs:element name="wsgetrama" type="tns:wsgetrama"/>
<xs:element name="wsgetramaResponse" type="tns:wsgetramaResponse"/>
<xs:complexType name="wsgetrama">
<xs:sequence>
<xs:element name="arg0" type="tns:wsgetramaInput"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="wsgetramaInput">
<xs:sequence>
<xs:element name="PERAMA" type="xs:decimal"/>
<xs:element name="PERAMD" type="xs:string"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="wsgetramaResponse">
<xs:sequence>
<xs:element name="return" type="tns:wsgetramaResult"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="wsgetramaResult">
<xs:sequence>
<xs:element name="PERAMD" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:schema>
</types>
<message name="wsgetrama">
<part element="tns:wsgetrama" name="parameters"></part>
</message>
<message name="wsgetramaResponse">
<part element="tns:wsgetramaResponse" name="parameters"></part>
</message>
<portType name="WSGETRAMAServices">
<operation name="wsgetrama">
<input message="tns:wsgetrama" wsam:Action="http://wsgetrama.wsbeans.iseries/WSGETRAMAServices/wsgetramaRequest"></input>
<output message="tns:wsgetramaResponse" wsam:Action="http://wsgetrama.wsbeans.iseries/WSGETRAMAServices/wsgetramaResponse"></output>
</operation>
</portType>
<binding name="WSGETRAMAServicesPortBinding" type="tns:WSGETRAMAServices">
<soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
<operation name="wsgetrama">
<soap:operation soapAction=""/>
<input>
<soap:body use="literal"/>
</input>
<output>
<soap:body use="literal"/>
</output>
</operation>
</binding>
<service name="WSGETRAMA">
<port binding="tns:WSGETRAMAServicesPortBinding" name="WSGETRAMAServicesPort">
<soap:address location="http://192.168.1.116:10028/web/services/WSGETRAMAService/WSGETRAMA"/>
</port>
</service>
</definitions>
While SoapUI has no problems consuming it, when I try the same on the integration bus, I get the following error:
The given SOAPAction wsgetrama does not match an operation
For consuming this WS, I've imported the mentioned WSDL and based the SOAPRequest Node on it.
Any ideas will be greatly appreciated!
Thanks! Sean
Upvotes: 0
Views: 1379
Reputation: 137
I'm having the same problem. I'm trying to consume a web service exposed in jboss EAP 6.2 from IBM Integration Bus message flow, and I got the same message (the service goes unresponsive and looking at server.log I noticed the same error "The given SOAPAction generarDocumento does not match an operation").
The wsdl indeed contains a soapaction that is blank:
<wsdl:operation name="generarDocumento">
<soap:operation soapAction="" style="document"/>
<wsdl:input name="generarDocumento">
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output name="generarDocumentoResponse">
<soap:body use="literal"/>
</wsdl:output>
<wsdl:fault name="ControladaException">
<soap:fault name="ControladaException" use="literal"/>
</wsdl:fault>
</wsdl:operation>
After hours I've found this on IBM Knowledge Base:
"If a SOAPAction is set to an empty string in the HTTPInput header, it is overridden, unless the action is set explicitly in the HTTPRequest header, for example:
SET OutputRoot.HTTPRequestHeader.SOAPAction = InputRoot.HTTPInputHeader.SOAPAction
"
I'm using a JavaCompute node, so I'm still figuring out how to translate the above ESQL Code to Java, in order to replace the HTTP Request and set the soapaction to blank.
I'll let you all know if I made it.
Upvotes: 1