## org.mortbay.jetty.client
Class HttpExchange

    java.lang.Object
      org.mortbay.jetty.client.HttpExchange

Direct Known Subclasses:
  CachedExchange, PropfindExchange, WebdavSupportedExchange

    public class HttpExchange

extends Object

An HTTP client API that encapsulates Exchange with a HTTP server. This object encapsulates:

- The HTTP server. (see `#setAddress(InetSocketAddress)` or `setURL(String)`)
- The HTTP request method, URI and HTTP version (see `setMethod(String)`, `setURI(String)`, and `setVersion(int)`
- The Request headers (see `addRequestHeader(String, String)` or `setRequestHeader(String, String)`)
- The Request content (see `setRequestContent(Buffer)` or `setRequestContentSource(InputStream)`)
- The status of the exchange (see `getStatus()`)
- Callbacks to handle state changes (see the onXxx methods such as `onRequestComplete()` or `onResponseComplete()`)
- The ability to intercept callbacks (see `setEventListener(HttpEventListener)`

The HttpExchange class is intended to be used by a developer wishing to have close asynchronous interaction with the the exchange. Typically a developer will extend the HttpExchange class with a derived class that implements some or all of the onXxx callbacks. There are also some predefined HttpExchange subtypes that can be used as a basis (see `ContentExchange` and `HttpExchange.CachedExchange`.

Typically the HttpExchange is passed to a the `HttpClient.send(HttpExchange)` method, which in turn selects a `HttpDestination` and calls it's HttpDestination#send(HttpExchange), which then creates or selects a {@link HttpConnection} and calls its {@link HttpConnection#send(HttpExchange). A developer may wish to directly call send on the destination or connection if they wish to bypass some handling provided (eg Cookie handling in the HttpDestination).

In some circumstances, the HttpClient or HttpDestination may wish to retry a HttpExchange (eg. failed pipeline request, authentication retry or redirection). In such cases, the HttpClient and/or HttpDestination may insert their own HttpExchangeListener to intercept and filter the call backs intended for the HttpExchange.

Author:
  gregw, Guillaume Nodet

Nested Class Summary
`static class` `HttpExchange.CachedExchange` Deprecated. use `CachedExchange`
`static class` `HttpExchange.ContentExchange` Deprecated. use `ContentExchange`

Field Summary
`static int` `STATUS_COMPLETED`
`static int` `STATUS_EXCEPTED`
`static int` `STATUS_EXPIRED`
`static int` `STATUS_PARSING_CONTENT`
`static int` `STATUS_PARSING_HEADERS`
`static int` `STATUS_SENDING_REQUEST`
`static int` `STATUS_START`
`static int` `STATUS_WAITING_FOR_COMMIT`
`static int` `STATUS_WAITING_FOR_CONNECTION`
`static int` `STATUS_WAITING_FOR_RESPONSE`

Constructor Summary
`HttpExchange()`

Method Summary
`void` `addRequestHeader(Buffer name, Buffer value)`
`void` `addRequestHeader(String name, String value)`
`void` `cancel()` Cancel this exchange Currently this implementation does nothing.
`boolean` `configureListeners()` true of the exchange should have listeners configured for it by the destination false if this is being managed elsewhere
`Address` `getAddress()`
`HttpEventListener` `getEventListener()`
`String` `getMethod()`
`Buffer` `getRequestContent()`
`Buffer` `getRequestContentChunk()`
`InputStream` `getRequestContentSource()`
`HttpFields` `getRequestFields()`
`boolean` `getRetryStatus()`
`Buffer` `getScheme()`
`int` `getStatus()`
`String` `getURI()`
`int` `getVersion()`
`boolean` `isDone(int status)`
`protected void` `onConnectionFailed(Throwable ex)`
`protected void` `onException(Throwable ex)`
`protected void` `onExpire()`
`protected void` `onRequestCommitted()`
`protected void` `onRequestComplete()`
`protected void` `onResponseComplete()`
`protected void` `onResponseContent(Buffer content)`
`protected void` `onResponseHeader(Buffer name, Buffer value)`
`protected void` `onResponseHeaderComplete()`
`protected void` `onResponseStatus(Buffer version, int status, Buffer reason)`
`protected void` `onRetry()`
`void` `reset()`
`void` `setAddress(Address address)`
`void` `setConfigureListeners(boolean autoConfigure)`
`void` `setEventListener(HttpEventListener listener)`
`void` `setMethod(String method)`
`void` `setRequestContent(Buffer requestContent)`
`void` `setRequestContentSource(InputStream in)`
`void` `setRequestContentType(String value)`
`void` `setRequestHeader(Buffer name, Buffer value)`
`void` `setRequestHeader(String name, String value)`
`void` `setRetryStatus(boolean retryStatus)`
`void` `setScheme(Buffer scheme)`
`void` `setURI(String uri)`
`void` `setURL(String url)`
`void` `setVersion(int version)`
`void` `setVersion(String version)`
`String` `toString()`
`int` `waitForDone()`
`void` `waitForStatus(int status)` Deprecated.

Methods inherited from class java.lang.Object
`clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

Field Detail

### STATUS_START

    public static final int STATUS_START

See Also:
  Constant Field Values

### STATUS_WAITING_FOR_CONNECTION

    public static final int STATUS_WAITING_FOR_CONNECTION

See Also:
  Constant Field Values

### STATUS_WAITING_FOR_COMMIT

    public static final int STATUS_WAITING_FOR_COMMIT

See Also:
  Constant Field Values

### STATUS_SENDING_REQUEST

    public static final int STATUS_SENDING_REQUEST

See Also:
  Constant Field Values

### STATUS_WAITING_FOR_RESPONSE

    public static final int STATUS_WAITING_FOR_RESPONSE

See Also:
  Constant Field Values

### STATUS_PARSING_HEADERS

    public static final int STATUS_PARSING_HEADERS

See Also:
  Constant Field Values

### STATUS_PARSING_CONTENT

    public static final int STATUS_PARSING_CONTENT

See Also:
  Constant Field Values

### STATUS_COMPLETED

    public static final int STATUS_COMPLETED

See Also:
  Constant Field Values

### STATUS_EXPIRED

    public static final int STATUS_EXPIRED

See Also:
  Constant Field Values

### STATUS_EXCEPTED

    public static final int STATUS_EXCEPTED

See Also:
  Constant Field Values

Constructor Detail

### HttpExchange

    public HttpExchange()

Method Detail

### getStatus

    public int getStatus()

### waitForStatus

    public void waitForStatus(int status)
                       throws InterruptedException

  Deprecated.

  Throws:
    `InterruptedException`

### waitForDone

    public int waitForDone()
                    throws InterruptedException

  Throws:
    `InterruptedException`

### reset

    public void reset()

### isDone

    public boolean isDone(int status)

### getEventListener

    public HttpEventListener getEventListener()

### setEventListener

    public void setEventListener(HttpEventListener listener)

### setURL

    public void setURL(String url)

  Parameters:
    `url` - Including protocol, host and port

### setAddress

    public void setAddress(Address address)

  Parameters:
    `address` -

### getAddress

    public Address getAddress()

  Returns:

### setScheme

    public void setScheme(Buffer scheme)

  Parameters:
    `scheme` -

### getScheme

    public Buffer getScheme()

  Returns:

### setVersion

    public void setVersion(int version)

  Parameters:
    `version` - as integer, 9, 10 or 11 for 0.9, 1.0 or 1.1

### setVersion

    public void setVersion(String version)

### getVersion

    public int getVersion()

  Returns:

### setMethod

    public void setMethod(String method)

  Parameters:
    `method` -

### getMethod

    public String getMethod()

  Returns:

### getURI

    public String getURI()

  Returns:

### setURI

    public void setURI(String uri)

  Parameters:
    `uri` -

### addRequestHeader

    public void addRequestHeader(String name,
                                 String value)

  Parameters:
    `name` -
    `value` -

### addRequestHeader

    public void addRequestHeader(Buffer name,
                                 Buffer value)

  Parameters:
    `name` -
    `value` -

### setRequestHeader

    public void setRequestHeader(String name,
                                 String value)

  Parameters:
    `name` -
    `value` -

### setRequestHeader

    public void setRequestHeader(Buffer name,
                                 Buffer value)

  Parameters:
    `name` -
    `value` -

### setRequestContentType

    public void setRequestContentType(String value)

  Parameters:
    `value` -

### getRequestFields

    public HttpFields getRequestFields()

  Returns:

### setRequestContent

    public void setRequestContent(Buffer requestContent)

  Parameters:
    `requestContent` -

### setRequestContentSource

    public void setRequestContentSource(InputStream in)

  Parameters:
    `in` -

### getRequestContentSource

    public InputStream getRequestContentSource()

### getRequestContentChunk

    public Buffer getRequestContentChunk()
                                  throws IOException

  Throws:
    `IOException`

### getRequestContent

    public Buffer getRequestContent()

### getRetryStatus

    public boolean getRetryStatus()

### setRetryStatus

    public void setRetryStatus(boolean retryStatus)

### cancel

    public void cancel()

  Cancel this exchange Currently this implementation does nothing.

### toString

    public String toString()

  Overrides:
    `toString` in class `Object`

### onRequestCommitted

    protected void onRequestCommitted()
                               throws IOException

  Throws:
    `IOException`

### onRequestComplete

    protected void onRequestComplete()
                              throws IOException

  Throws:
    `IOException`

### onResponseStatus

    protected void onResponseStatus(Buffer version,
                                    int status,
                                    Buffer reason)
                             throws IOException

  Throws:
    `IOException`

### onResponseHeader

    protected void onResponseHeader(Buffer name,
                                    Buffer value)
                             throws IOException

  Throws:
    `IOException`

### onResponseHeaderComplete

    protected void onResponseHeaderComplete()
                                     throws IOException

  Throws:
    `IOException`

### onResponseContent

    protected void onResponseContent(Buffer content)
                              throws IOException

  Throws:
    `IOException`

### onResponseComplete

    protected void onResponseComplete()
                               throws IOException

  Throws:
    `IOException`

### onConnectionFailed

    protected void onConnectionFailed(Throwable ex)

### onException

    protected void onException(Throwable ex)

### onExpire

    protected void onExpire()

### onRetry

    protected void onRetry()
                    throws IOException

  Throws:
    `IOException`

### configureListeners

    public boolean configureListeners()

  true of the exchange should have listeners configured for it by the destination false if this is being managed elsewhere

  Returns:

### setConfigureListeners

    public void setConfigureListeners(boolean autoConfigure)

Copyright © 1995-2008 Mort Bay Consulting. All Rights Reserved.