|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||
java.lang.Objectcom.ning.http.client.AsyncHttpClient
public class AsyncHttpClient
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();
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();
AsyncCompletionHandler.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 AsyncHttpClientConfig.getIdleConnectionTimeoutInMs()
expires. This object can hold many persistent connections to different host.
| Nested Class Summary | |
|---|---|
class |
AsyncHttpClient.BoundRequestBuilder
|
| Field Summary | |
|---|---|
protected SignatureCalculator |
signatureCalculator
Default signature calculator to use for all requests constructed by this client instance. |
| Constructor Summary | |
|---|---|
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. |
|
| Methods inherited from class java.lang.Object |
|---|
clone, equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
| Field Detail |
|---|
protected SignatureCalculator signatureCalculator
| Constructor Detail |
|---|
public AsyncHttpClient()
AsyncHttpClientConfig configuration. The
default AsyncHttpProvider will be used (NettyAsyncHttpProvider
public AsyncHttpClient(AsyncHttpProvider provider)
AsyncHttpProvider and
the default AsyncHttpClientConfig configuration.
provider - a AsyncHttpProviderpublic AsyncHttpClient(AsyncHttpClientConfig config)
AsyncHttpClientConfig configuration and the
DEFAULT_PROVIDER
config - a AsyncHttpClientConfig
public AsyncHttpClient(AsyncHttpProvider httpProvider,
AsyncHttpClientConfig config)
AsyncHttpClientConfig configuration and
and a AsyncHttpProvider.
config - a AsyncHttpClientConfighttpProvider - a AsyncHttpProvider
public AsyncHttpClient(String providerClass,
AsyncHttpClientConfig config)
AsyncHttpClientConfig configuration and
and a AsyncHttpProvider class' name.
config - a AsyncHttpClientConfigproviderClass - a AsyncHttpProvider| Method Detail |
|---|
public AsyncHttpProvider getProvider()
AsyncHttpProvider
AsyncHttpProviderpublic void close()
protected void finalize()
throws Throwable
finalize in class ObjectThrowablepublic boolean isClosed()
public AsyncHttpClientConfig getConfig()
AsyncHttpClientConfig
AsyncHttpClientConfigpublic AsyncHttpClient setSignatureCalculator(SignatureCalculator signatureCalculator)
public AsyncHttpClient.BoundRequestBuilder prepareGet(String url)
url - A well formed URL.
AsyncHttpClient.BoundRequestBuilderpublic AsyncHttpClient.BoundRequestBuilder prepareConnect(String url)
url - A well formed URL.
AsyncHttpClient.BoundRequestBuilderpublic AsyncHttpClient.BoundRequestBuilder prepareOptions(String url)
url - A well formed URL.
AsyncHttpClient.BoundRequestBuilderpublic AsyncHttpClient.BoundRequestBuilder prepareHead(String url)
url - A well formed URL.
AsyncHttpClient.BoundRequestBuilderpublic AsyncHttpClient.BoundRequestBuilder preparePost(String url)
url - A well formed URL.
AsyncHttpClient.BoundRequestBuilderpublic AsyncHttpClient.BoundRequestBuilder preparePut(String url)
url - A well formed URL.
AsyncHttpClient.BoundRequestBuilderpublic AsyncHttpClient.BoundRequestBuilder prepareDelete(String url)
url - A well formed URL.
AsyncHttpClient.BoundRequestBuilderpublic AsyncHttpClient.BoundRequestBuilder prepareRequest(Request request)
AsyncHttpClient.BoundRequestBuilder using a Request
request - a Request
AsyncHttpClient.BoundRequestBuilder
public <T> ListenableFuture<T> executeRequest(Request request,
AsyncHandler<T> handler)
throws IOException
T - Type of the value that will be returned by the associated Futurerequest - Requesthandler - an instance of AsyncHandler
Future of type T
IOException
public ListenableFuture<Response> executeRequest(Request request)
throws IOException
request - Request
Future of type Response
IOException
protected AsyncHttpClient.BoundRequestBuilder requestBuilder(String reqType,
String url)
protected AsyncHttpClient.BoundRequestBuilder requestBuilder(Request prototype)
|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||