cancel
Showing results for 
Search instead for 
Did you mean: 

Custome SOAP Header in PI

Former Member
0 Kudos

Hi,

We are integrating Salesforce.com with PI via web service. Its a two step process. first we are getting the session Id by calling enterprise wsdl and then we need to call the import contact wsdl using the session id for uploading the contact details in salesforce. We are creating the soap envelop manually for sending the session id for the second soap call. While executing end to end scenario in PI we are getting the below error

"Message processing failed. Cause: com.sap.aii.af.ra.ms.api.RecoverableException: SOAP: response message contains an error XIAdapter/HTTP/ADAPTER.HTTP_EXCEPTION - HTTP 500 Internal Server Error"

When we test the same scenario using soap ui we are getting the proper response.

We analysied and found the below:

When we use soap ui the below lines are added by default in the request before the soap envelop

POST https://cs3-api.salesforce.com/services/Soap/class/ContactWS HTTP/1.1

Accept-Encoding: gzip,deflate

Content-Type: text/xml;charset=UTF-8

SOAPAction: ""

User-Agent: Jakarta Commons-HttpClient/3.1

Host: cs3-api.salesforce.com

Content-Length: 1971

Now when we test the same with PI, the above declaration is not added since we check the option of "do not use soap envelop" in the receiver soap channel (as we are building custom header in java)

Please help in getting the error rectified. Any pointers for adding the above declaration before the soap envelop or any other method for passing the session id using the default soap header(in receiver soap channel) would be very helpful.

Thanks in advance.

Pooja

Accepted Solutions (0)

Answers (2)

Answers (2)

Former Member
0 Kudos

Hi,

I think the error "XIAdapter/HTTP/ADAPTER.HTTP_EXCEPTION - HTTP 500 Internal Server Error" is not connected to missing HTTP header values. It is also thrown (in manual SOAP envelope mode) when a SOAPFault is sent, please see SAPNote 1533195 and SAPNote 1055678.

Regards,

Hans

former_member184681
Active Contributor
0 Kudos

Hi,

The additional lines you mentioned are not really SOAP Header, but HTTP Header, and they are also included by PI accordingly, based on your receiver communication channel configuration. So most probably this is not the reason for your problem. You can use the TCP Gateway application, recommended by SAP, if you want to make sure about that. But I would rather search somewhere else for the source of this problem, if I were you. For instance, it might be a metter of namespaces in the XML content. Try executing the web service from SOAP UI with exactly the same content (including SOAP Envelope) as you sent from PI - what is the result?

Regards,

Greg

Former Member
0 Kudos

Hi,

I tried testing in SOAP UI and it was processed successfully. also checked on the SOAP envelop we are creating in the mapping looks same as the one being used in SOAP UI. Will check using tcpmon and check how the http headers are sent.Also can you please let me know how to set http headers while using soap channel?

Regards,

Pooja

adam_smith7
Participant
0 Kudos

Hi Pooja

If you are not already aware- do note that when you use the "do not use soap envelop" option in the adapter, that SOAP fault messages which are returned by the provider are seen as server errors by the adapter and result in

HTTP 500 Internal Server Error.

FYI To be able to process soap faults you need to add the parameter: XMBWS.NoSOAPIgnoreStatusCode = true to the module configuration of the soap adapter where you have selected "do not use soap envelop".

Hope that helped.

Regards

Adam

markangelo_dihiansan
Active Contributor
0 Kudos

Hello,

When checking the Do Not Use SOAP Envelope, the content type changes from text/xml to application/xml. Can you use the MessageTransformBean to change the content type back to text/xml and let us know of the result?

POST https://cs3-api.salesforce.com/services/Soap/class/ContactWS HTTP/1.1

Accept-Encoding: gzip,deflate

Content-Type: text/xml;charset=UTF-8

SOAPAction: ""

User-Agent: Jakarta Commons-HttpClient/3.1

Host: cs3-api.salesforce.com

Content-Length: 1971

Is the SOAP Action really ""? Is the webservice using SOAP 1.2?

You might also try checking your firewall settings e.g SOAP UI is allowed to make that request but PI is not.

Hope this helps,

Mark