Proposed Alternative SOAP over HTTP Binding : a perfect world spoiled by reality



Proposed Alternative SOAP over HTTP Binding

Binding Namespace:

http://schemas.xmlsoap.org/soap/alternativeHTTP

HTTP GET

SOAP Envelope is returned as the result of an HTTP GET request. Parameters are encoded within the URI

Request

GET /StockQuoteService?symbol=IBM HTTP/1.1

Host: www.ibm.com

Accept: application/soap+xml

Accept-Charset: "utf-8"

Response

HTTP/1.1 200 OK

Content-Type: application/soap+xml; charset="utf-8"

Content-Length: nnnn

<soap:Envelope>

<soap:Header />

<soap:Body />

</soap:Envelope>

This is really no different from using HTTP GET to return HTML pages or other types of content. The parameters for the request are contained within the Request-URI, the response is a SOAP Envelope.

HTTP POST

SOAP Envelope is posted to the service. Posting indicates that the data contained within the SOAP Envelope payload must become a part of the data managed by the service. This method must be rejected if POSTing does not make sense.

Request

POST /AddressBookService HTTP/1.1

Host: www.ibm.com

Content-Type: application/soap+xml; charset="utf-8"

Content-Length: nnnn

<soap:Envelope>

<soap:Body>

<Listing>

<Name>James Snell</Name>

<Address>

<StreetNum />

<StreetName />

<City />

<State />

<Zip />

</Address>

</Listing>

</soap:Body>

</soap:Envelope>

Response

HTTP/1.1 204 No Content

The data contained within the SOAP payload is to be posted to the data managed by the AddressBookService.

HTTP OPTIONS

Can be used to query the WSDL description of a Service.

Request

OPTIONS /DataService HTTP/1.1

Host: www.ibm.com

Accept: text/xml

Response

HTTP/1.1 200 OK

Content-Type: text/xml; charset="utf-8"

Content-Length: nnnn

<wsdl:description>...</wsdl:description>

HTTP INVOKE

A new HTTP method used to indicate an operation to be invoked against a Service. This replaces the use of POST in the official HTTP binding.

Request

INVOKE /StockQuoteService HTTP/1.1

Host: www.ibm.com

Accept: application/soap+xml

Accept-Charset: utf-8

Content-Type: application/soap+xml

Content-Length: nnnn

<soap:Envelope>

<soap:Body>

<abc:GetStockQuote>

<abc:symbol>IBM</abc:symbol>

</abc:GetStockQuote>

</soap:Body>

</soap:Envelope>

Response

HTTP/1.1 200 OK

Content-Type: application/soap+xml; charset="utf-8"

Content-Length: nnnn

<soap:Envelope>

<soap:Body>

<abc:GetStockQuoteResponse>

<abc:value>85.00</abc:value>

</abc:GetStockQuoteResponse>

</soap:Body>

</soap:Envelope>

Request 2

INVOKE /DataService HTTP/1.1

Host: www.ibm.com

Accept: *;q=0

Content-Type: application/soap+xml; charset="utf-8"

Content-Length: nnnn

<soap:Envelope>

<soap:Body>

<cds:INSERT>

<abc:SomeDataToInsert />

</cds:INSERT>

</soap:Body>

</soap:Envelope>

Response 2

HTTP/1.1 204 No Content

In this alternative binding, an HTTP request that contains a SOAP envelope does not require an HTTP response that contains a SOAP envelope. The envelope can contain any type of message of any content type.

Request 3

INVOKE /StockQuoteService HTTP/1.1

Host: www.ibm.com

Accept: text/plain

Content-Type: application/soap+xml; charset="utf-8"

Content-Length: nnnn

<soap:Envelope>

<soap:Body>

<abc:GetQuote>

<abc:symbol>IBM</abc:symbol>

</abc:GetQuote>

</soap:Body>

</soap:Envelope>

Response 3

HTTP/1.1 200 OK

Content-Type: text/plain

Content-Length: 5

85.00

HTTP PUT

Can be used to deploy new services

Request

PUT /DataService HTTP/1.1

Host: www.ibm.com

Content-Type: application/compress

Content-Length: nnnn

{binary content that contains the service being deployed}

Response

HTTP/1.1 204 No Content

HTTP DELETE

Can be used to undeploy services

Request

DELETE /DataService HTTP/1.1

Host: www.ibm.com

Response

HTTP/1.1 204 No Content


Copyright © 2002 James Snell.
Last update: 6/25/2002; 9:22:07 PM.