Question & Answer
I recently setup a Web Services with CICS as the service provider but have been unable to successfully invoke the service. I am using HTTP to connect the Web Service form our .Net application [Windows Server]. There aren't any error messages found in the CICS log to suggest the possible cause. It was only after looking at CICS auxtrace that I knew there was a Soap fault: HTTP POST method only supported by this endpoint.
A CICS auxtrace of the failure shows an inbound request asking for the WSDL itself to be returned. Here is an excerpt from the auxtrace:
*GET /service?WSDL HTTP/1.1..Acc:* * eptimage/gif, image/jpeg, image* */pjpeg, image/pjpeg, application* */x-ms-application, application/x*
The above request is asking for the WSDL of Web Service 'service' to be sent back in the response. CICS responded with a SOAPFAULT back to the client:
*HTTP/1.1 405 Method Not Allowed * ... ... *<SOAP-ENV:Envelope xmlns:SOAP-EN* *V="http://schemas.xmlsoap.org/so* *ap/envelope/"><SOAP-ENV:Body><SO* *AP-ENV:Fault xmlns=""><faultcode* *>SOAP-ENV:Client</faultcode><fau* *ltstring>HTTP POST method only s* *upported by this endpoint</fault* *string></SOAP-ENV:Fault></SOAP-E* *NV:Body></SOAP-ENV:Envelope> *
If the WSDL file was present within the WSDIR of the PIPELINE then CICS would have created a URIMAP for /service?WSDL and would have returned the requested file. Instead the request matches the URIMAP created for the web service itself (/service). CICS then rejects the request because it uses a GET method instead of POST.
To resolve this you need to do one of the following:
Place the WSDL file in the WSDIR of the PIPELINE
Change the client to not request the WSDL file
Change the client to tolerate the WSDL file not being returned
CICS/TS CICSTS CICS TS CICS Transaction Server
06 March 2018