Modify HTTP status in SOAP Fault response message

Posted by rvkanten on 13-Aug-2010 03:09

I'm invoking a Sonic web service who in turn invokes a 3rd-party web service.

SOAP Fault response messages contain the wrong HTTO status code 200 (success).

According to the SOAP specification it should be 500 (failure).

As a result I'm unable to access the SOAP Fault in my OE 10.1x client:

Error receiving Web Service Response: No message received (11773).

How can I modify in Sonic the HTTP status code in case of a SOAP Fault returned by the 3rd-party web service?

All Replies

Posted by Bill Wood on 13-Aug-2010 10:25

Actually, the SOAP spec is a little unclear on this, as it specifically refers to SOAP processing errors, not explicit client errors.

The SOAP 1.1 Specification states:


In case of a SOAP error while processing the request, the SOAP HTTP  server MUST issue an HTTP 500 “Internal Server Error” response and  include a SOAP message in the response containing a SOAP Fault element  (see section 4.4) indicating the SOAP processing error.

But what if if there is no SOAP error while processing/SOAP processing  error?  Rather, it is a business error that results in an explicit soap fault.

The WS-I Basic profile closes the ambiguity, so for WS-I compliance you would follow:
An INSTANCE MUST use a “500 Internal Server Error” HTTP status code if the response message is a SOAP Fault.

You can set the HTTP response code by setting it in the reply message.  (I think you set the X-HTTP-ResponseCode, but I'm not 100% sure of the name.)

(Note: I am assuming you are not using Sonic 8.0 which handles this correctly)

Posted by rvkanten on 13-Aug-2010 10:34

William,

Thanks for your reply.

I will pass your suggestions to our Sonic engineer.

We use Sonic 7.5/6.

This thread is closed