- From: Marc Hadley <Marc.Hadley@Sun.COM>
- Date: Wed, 02 Feb 2005 16:45:34 -0500
- To: public-ws-async-tf@w3.org
I took an action to outline one approach to async request-response using HTTP. Basically the request is sent as normal as the entity body of a HTTP POST request but instead of returning the response in the HTTP entity body, the server responds with a 303 (See other) status code and includes a Location header that gives a URI from which the response can be retrieved. The client then uses a new HTTP GET request to retrieve the response. E.g. Initial request: POST /StockQuote HTTP/1.1 Host: stockquote.example.com Content-Type: application/soap+xml Content-Length: nnnn <env:Envelope xmlns:env="..."> ... </env:Envelope> Response: HTTP/1.1 303 See Other Location: http://stockquote.example.com/someuniqueidentifier Retry-After: 120 Content-Type: text/html Content-Length: 0 Susequent request to retrieve response: GET /someuniqueidentifier HTTP/1.1 Host: stockquote.example.com Response: HTTP/1.1 200 OK Content-Type: application/soap+xml Content-Length: nnnn <env:Envelope xmlns:env="..."> ... </env:Envelope> If the response isn't yet ready the server can send back another 303 indicating when the request may be retried using the Retry-After header. I quite like this approach since it pushes the asynchrony down into the HTTP layer and doesn't require anything new in WSDL or SOAP. The existing SOAP 1.2 HTTP binding supports this usage. Marc. --- Marc Hadley <marc.hadley at sun.com> Web Technologies and Standards, Sun Microsystems.
Received on Wednesday, 2 February 2005 21:45:36 UTC