public class

AsyncHttpClient

extends Object
java.lang.Object
   ↳ com.ning.http.client.AsyncHttpClient

Class Overview

This class support asynchronous and synchronous HTTP request.

To execute synchronous HTTP request, you just need to do

    AsyncHttpClient c = new AsyncHttpClient();
    Future f = c.prepareGet("http://www.ning.com/").execute();
 
The code above will block until the response is fully received. To execute asynchronous HTTP request, you create an AsyncHandler or its abstract implementation, AsyncCompletionHandler

       AsyncHttpClient c = new AsyncHttpClient();
       Future f = c.prepareGet("http://www.ning.com/").execute(new AsyncCompletionHandler() {
 

@Override public Response onCompleted(Response response) throws IOException { // Do something return response; }

@Override public void onThrowable(Throwable t) { } }); Response response = f.get();

// We are just interested to retrieve the status code. Future f = c.prepareGet("http://www.ning.com/").execute(new AsyncCompletionHandler() {

@Override public Integer onCompleted(Response response) throws IOException { // Do something return response.getStatusCode(); }

@Override public void onThrowable(Throwable t) { } }); Integer statusCode = f.get();

onCompleted(com.ning.http.client.Response) will be invoked once the http response has been fully read, which include the http headers and the response body. Note that the entire response will be buffered in memory.

You can also have more control about the how the response is asynchronously processed by using a AsyncHandler

      AsyncHttpClient c = new AsyncHttpClient();
      Future f = c.prepareGet("http://www.ning.com/").execute(new AsyncHandler() {
          private StringBuilder builder = new StringBuilder();
 

@Override public STATE onStatusReceived(HttpResponseStatus s) throws Exception { // return STATE.CONTINUE or STATE.ABORT return STATE.CONTINUE }

@Override public STATE onHeadersReceived(HttpResponseHeaders bodyPart) throws Exception { // return STATE.CONTINUE or STATE.ABORT return STATE.CONTINUE

} @Override

public STATE onBodyPartReceived(HttpResponseBodyPart bodyPart) throws Exception { builder.append(new String(bodyPart)); // return STATE.CONTINUE or STATE.ABORT return STATE.CONTINUE }

@Override public String onCompleted() throws Exception { // Will be invoked once the response has been fully read or a ResponseComplete exception // has been thrown. return builder.toString(); }

@Override public void onThrowable(Throwable t) { } });

String bodyResponse = f.get();

HttpContent sub classes, you can asynchronously process the response status,headers and body and decide when to stop the processing the response by throwing a new {link ResponseComplete} at any moment.

This class can also be used without the need of AsyncHandler

      AsyncHttpClient c = new AsyncHttpClient();
      Future f = c.prepareGet(TARGET_URL).execute();
      Response r = f.get();
 

Finally, you can configure the AsyncHttpClient using an AsyncHttpClientConfig instance

      AsyncHttpClient c = new AsyncHttpClient(new AsyncHttpClientConfig.Builder().setRequestTimeoutInMs(...).build());
      Future f = c.prepareGet(TARGET_URL).execute();
      Response r = f.get();
 

An instance of this class will cache every HTTP 1.1 connections and close them when the getIdleConnectionTimeoutInMs() expires. This object can hold many persistent connections to different host.

Summary

Nested Classes
class AsyncHttpClient.BoundRequestBuilder  
Fields
protected SignatureCalculator signatureCalculator Default signature calculator to use for all requests constructed by this client instance.
Public Constructors
AsyncHttpClient()
Create a new HTTP Asynchronous Client using the default AsyncHttpClientConfig configuration.
AsyncHttpClient(AsyncHttpClientConfig config)
Create a new HTTP Asynchronous Client using a AsyncHttpClientConfig configuration and the DEFAULT_PROVIDER
AsyncHttpClient(AsyncHttpProvider provider)
Create a new HTTP Asynchronous Client using an implementation of AsyncHttpProvider and the default AsyncHttpClientConfig configuration.
AsyncHttpClient(AsyncHttpProvider httpProvider, AsyncHttpClientConfig config)
Create a new HTTP Asynchronous Client using a AsyncHttpClientConfig configuration and and a AsyncHttpProvider.
AsyncHttpClient(String providerClass, AsyncHttpClientConfig config)
Create a new HTTP Asynchronous Client using a AsyncHttpClientConfig configuration and and a AsyncHttpProvider class' name.
Public Methods
void close()
Close the underlying connections.
ListenableFuture<Response> executeRequest(Request request)
Execute an HTTP request.
<T> ListenableFuture<T> executeRequest(Request request, AsyncHandler<T> handler)
Execute an HTTP request.
AsyncHttpClientConfig getConfig()
AsyncHttpProvider getProvider()
Return the asynchronous AsyncHttpProvider
boolean isClosed()
Return true if closed
AsyncHttpClient.BoundRequestBuilder prepareConnect(String url)
Prepare an HTTP client CONNECT request.
AsyncHttpClient.BoundRequestBuilder prepareDelete(String url)
Prepare an HTTP client DELETE request.
AsyncHttpClient.BoundRequestBuilder prepareGet(String url)
Prepare an HTTP client GET request.
AsyncHttpClient.BoundRequestBuilder prepareHead(String url)
Prepare an HTTP client HEAD request.
AsyncHttpClient.BoundRequestBuilder prepareOptions(String url)
Prepare an HTTP client OPTIONS request.
AsyncHttpClient.BoundRequestBuilder preparePost(String url)
Prepare an HTTP client POST request.
AsyncHttpClient.BoundRequestBuilder preparePut(String url)
Prepare an HTTP client PUT request.
AsyncHttpClient.BoundRequestBuilder prepareRequest(Request request)
AsyncHttpClient setSignatureCalculator(SignatureCalculator signatureCalculator)
Set default signature calculator to use for requests build by this client instance
Protected Methods
void finalize()
AsyncHttpClient.BoundRequestBuilder requestBuilder(Request prototype)
AsyncHttpClient.BoundRequestBuilder requestBuilder(String reqType, String url)
[Expand]
Inherited Methods
From class java.lang.Object

Fields

protected SignatureCalculator signatureCalculator

Default signature calculator to use for all requests constructed by this client instance.

Public Constructors

public AsyncHttpClient ()

Create a new HTTP Asynchronous Client using the default AsyncHttpClientConfig configuration. The default AsyncHttpProvider will be used (NettyAsyncHttpProvider

public AsyncHttpClient (AsyncHttpClientConfig config)

Create a new HTTP Asynchronous Client using a AsyncHttpClientConfig configuration and the DEFAULT_PROVIDER

Parameters
config a AsyncHttpClientConfig

public AsyncHttpClient (AsyncHttpProvider provider)

Create a new HTTP Asynchronous Client using an implementation of AsyncHttpProvider and the default AsyncHttpClientConfig configuration.

Parameters
provider a AsyncHttpProvider

public AsyncHttpClient (AsyncHttpProvider httpProvider, AsyncHttpClientConfig config)

Create a new HTTP Asynchronous Client using a AsyncHttpClientConfig configuration and and a AsyncHttpProvider.

Parameters
httpProvider a AsyncHttpProvider
config a AsyncHttpClientConfig

public AsyncHttpClient (String providerClass, AsyncHttpClientConfig config)

Create a new HTTP Asynchronous Client using a AsyncHttpClientConfig configuration and and a AsyncHttpProvider class' name.

Parameters
providerClass a AsyncHttpProvider
config a AsyncHttpClientConfig

Public Methods

public void close ()

Close the underlying connections.

public ListenableFuture<Response> executeRequest (Request request)

Execute an HTTP request.

Parameters
request Request
Returns
  • a Future of type Response
Throws
IOException

public ListenableFuture<T> executeRequest (Request request, AsyncHandler<T> handler)

Execute an HTTP request.

Parameters
request Request
handler an instance of AsyncHandler
Returns
  • a Future of type T
Throws
IOException

public AsyncHttpClientConfig getConfig ()

public AsyncHttpProvider getProvider ()

Return the asynchronous AsyncHttpProvider

Returns

public boolean isClosed ()

Return true if closed

Returns
  • true if closed

public AsyncHttpClient.BoundRequestBuilder prepareConnect (String url)

Prepare an HTTP client CONNECT request.

Parameters
url A well formed URL.

public AsyncHttpClient.BoundRequestBuilder prepareDelete (String url)

Prepare an HTTP client DELETE request.

Parameters
url A well formed URL.

public AsyncHttpClient.BoundRequestBuilder prepareGet (String url)

Prepare an HTTP client GET request.

Parameters
url A well formed URL.

public AsyncHttpClient.BoundRequestBuilder prepareHead (String url)

Prepare an HTTP client HEAD request.

Parameters
url A well formed URL.

public AsyncHttpClient.BoundRequestBuilder prepareOptions (String url)

Prepare an HTTP client OPTIONS request.

Parameters
url A well formed URL.

public AsyncHttpClient.BoundRequestBuilder preparePost (String url)

Prepare an HTTP client POST request.

Parameters
url A well formed URL.

public AsyncHttpClient.BoundRequestBuilder preparePut (String url)

Prepare an HTTP client PUT request.

Parameters
url A well formed URL.

public AsyncHttpClient.BoundRequestBuilder prepareRequest (Request request)

public AsyncHttpClient setSignatureCalculator (SignatureCalculator signatureCalculator)

Set default signature calculator to use for requests build by this client instance

Protected Methods

protected void finalize ()

Throws
Throwable

protected AsyncHttpClient.BoundRequestBuilder requestBuilder (Request prototype)

protected AsyncHttpClient.BoundRequestBuilder requestBuilder (String reqType, String url)