SOAP Receiver Error

SOAP Receiver Error
Scenario - SOAP (async) -> PI -> SOAP (async).
When PI is trying to send message to WS on receiver side, the SOAP channel is throwing an error.
Do I need to mention the SOAP Action? My SOAP receiver configuration is fairly simple - just the URL (http:// ... ).
Do I need to mention anything else?
Or this error is due to some problem at the receiving WS?

SOAP: response message contains an error XIAdapter/PARSING/ADAPTER.SOAP_EXCEPTION - soap fault: System.Web.Services.Protocols.SoapException: Server did not recognize the value of HTTP Header SOAPAction: . at System.Web.Services.Protocols.Soap11ServerProtocolHelper.RouteRequest() at System.Web.Services.Protocols.SoapServerProtocol.RouteRequest(SoapServerMessage message) at System.Web.Services.Protocols.SoapServerProtocol.Initialize() at System.Web.Services.Protocols.ServerProtocolFactory.Create(Type type, HttpContext context, HttpRequest request, HttpResponse response, Boolean& abortProcessing)

Adapter Framework caught exception: SOAP: response message contains an error XIAdapter/PARSING/ADAPTER.SOAP_EXCEPTION - soap fault: System.Web.Services.Protocols.SoapException: Server did not recognize the value of HTTP Header SOAPAction: . at System.Web.Services.Protocols.Soap11ServerProtocolHelper.RouteRequest() at System.Web.Services.Protocols.SoapServerProtocol.RouteRequest(SoapServerMessage message) at System.Web.Services.Protocols.SoapServerProtocol.Initialize() at System.Web.Services.Protocols.ServerProtocolFactory.Create(Type type, HttpContext context, HttpRequest request, HttpResponse response, Boolean& abortProcessing)

Delivering the message to the application using connection SOAP_http://sap.com/xi/XI/System failed, due to: com.sap.engine.interfaces.messaging.api.exception.MessagingException: SOAP: response message contains an error XIAdapter/PARSING/ADAPTER.SOAP_EXCEPTION - soap fault: System.Web.Services.Protocols.SoapException: Server did not recognize the value of HTTP Header SOAPAction: . at System.Web.Services.Protocols.Soap11ServerProtocolHelper.RouteRequest() at System.Web.Services.Protocols.SoapServerProtocol.RouteRequest(SoapServerMessage message) at System.Web.Services.Protocols.SoapServerProtocol.Initialize() at System.Web.Services.Protocols.ServerProtocolFactory.Create(Type type, HttpContext context, HttpRequest request, HttpResponse response, Boolean& abortProcessing).

----------
Is SOAP Action Mandatory?
---------
SOAP action is not mandatory
----------
Any idea why I am getting above error?
----------
You may be sending a data to a service which requires SOAP action. Are you able to test the webservice, with tool like xmlspy .
------------
I tested it with SOAPUI. I am getting following error with that -




soap:Client
System.Web.Services.Protocols.SoapException: Server did not recognize the value of HTTP Header SOAPAction: http://sap.com/xi/WebService/soap1.1.
at System.Web.Services.Protocols.Soap11ServerProtocolHelper.RouteRequest()
at System.Web.Services.Protocols.SoapServerProtocol.RouteRequest(SoapServerMessage message)
at System.Web.Services.Protocols.SoapServerProtocol.Initialize()
at System.Web.Services.Protocols.ServerProtocolFactory.Create(Type type, HttpContext context, HttpRequest request, HttpResponse response, Boolean& abortProcessing)





Actually, I have created the DT, MT and Service Interface and I have given the WS team the WSDL from the generated Service Interface. I noticed in the WSDL that there is a SOAP Action - http://sap.com/xi/WebService/soap1.1, which doesn't make too much of sense.

Any idea? Do I need to ask the WS team to provide me WSDL? Why not WSDL from Service Interface works in this case?
Sorry for so many questions ... :-)
-------
Actually, I have created the DT, MT and Service Interface and I have given the WS team the WSDL from the generated Service Interface. I noticed in the WSDL that there is a SOAP Action - http://sap.com/xi/WebService/soap1.1, which doesn't make too much of sense.

You are using the receiver channel. the procedure should be that you should upload the wsdl provided by the target system as an external definition. create DT, MT and MI for receiver side. If its asking for action, it means you need to specify the action, ask the webservice guys,

Any idea? Do I need to ask the WS team to provide me WSDL? Why not WSDL from Service Interface works in this case?
Sorry for so many questions ... :-)

We provide webservice to others when we use soap sender adapter.

----------
I was not aware that for the Receiver SOAP, we need to get the WSDL from the WS team. I thought that might be I can create the structures and provide them the WSDL from MI :-)

I am not closing this thread for the time being, would like to make changes and test. Once it goes through smoothly, then I will close this thread.

Thanks for your help Inder.
------------
Check this link for the SOAP receiver
http://help.sap.com/saphelp_nw04/helpdata/en/29/5bd93f130f9215e10000000a155106/frameset.htm
-----------
For SOAP receiver, never create the DT / MT on your own. Always import the WSDL file.
Also, before importing WSDL and creating the whole scenario, it is advisable to test the WSDL with your end-point using some external tool like SOAPUI. This will help you avoiding a lot of headache.
-----------
That was a helpful tip and it helped in resolving the issue.

Thanks everyone for their valuable input. Closing this thread.

SAP Developer Network SAP Weblogs: SAP Process Integration (PI)