Package org.asynchttpclient
Interface AsyncHttpClient
-
- All Superinterfaces:
AutoCloseable
,Closeable
- All Known Implementing Classes:
DefaultAsyncHttpClient
public interface AsyncHttpClient extends Closeable
This class support asynchronous and synchronous HTTP requests.
To execute a synchronous HTTP request, you just need to doAsyncHttpClient c = new AsyncHttpClient(); Future<Response> f = c.prepareGet(TARGET_URL).execute();
The code above will block until the response is fully received. To execute an asynchronous HTTP request, you create anAsyncHandler
or its abstract implementation,AsyncCompletionHandler
TheAsyncHttpClient c = new AsyncHttpClient(); Future<Response> f = c.prepareGet(TARGET_URL).execute(new AsyncCompletionHandler<Response>() { @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 in retrieving the status code. Future<Integer> f = c.prepareGet(TARGET_URL).execute(new AsyncCompletionHandler<Integer>() { @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(Response)
method will be invoked once the http response has been fully read. TheResponse
object includes 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 anAsyncHandler
You can asynchronously process the response status, headers and body and decide when to stop processing the response by returning a newAsyncHttpClient c = new AsyncHttpClient(); Future<String> f = c.prepareGet(TARGET_URL).execute(new AsyncHandler<String>() { 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();
AsyncHandler.State.ABORT
at any moment.This class can also be used without the need of
AsyncHandler
.
AsyncHttpClient c = new AsyncHttpClient(); Future<Response> f = c.prepareGet(TARGET_URL).execute(); Response r = f.get();
Finally, you can configure the AsyncHttpClient using an
DefaultAsyncHttpClientConfig
instance.
AsyncHttpClient c = new AsyncHttpClient(new AsyncHttpClientConfig.Builder().setRequestTimeoutInMs(...).build()); Future<Response> f = c.prepareGet(TARGET_URL).execute(); Response r = f.get();
An instance of this class will cache every HTTP 1.1 connection and close them when theDefaultAsyncHttpClientConfig.getReadTimeout()
expires. This object can hold many persistent connections to different hosts.
-
-
Method Summary
All Methods Instance Methods Abstract Methods Modifier and Type Method Description ListenableFuture<Response>
executeRequest(Request request)
Execute an HTTP request.ListenableFuture<Response>
executeRequest(RequestBuilder requestBuilder)
Execute an HTTP request.<T> ListenableFuture<T>
executeRequest(RequestBuilder requestBuilder, AsyncHandler<T> handler)
Execute an HTTP request.<T> ListenableFuture<T>
executeRequest(Request request, AsyncHandler<T> handler)
Execute an HTTP request.void
flushChannelPoolPartitions(Predicate<Object> predicate)
Flush ChannelPool partitions based on a predicateClientStats
getClientStats()
Return details about pooled connections.AsyncHttpClientConfig
getConfig()
Return the config associated to this client.boolean
isClosed()
Return true if closedBoundRequestBuilder
prepare(String method, String url)
Prepare an HTTP client request.BoundRequestBuilder
prepareConnect(String url)
Prepare an HTTP client CONNECT request.BoundRequestBuilder
prepareDelete(String url)
Prepare an HTTP client DELETE request.BoundRequestBuilder
prepareGet(String url)
Prepare an HTTP client GET request.BoundRequestBuilder
prepareHead(String url)
Prepare an HTTP client HEAD request.BoundRequestBuilder
prepareOptions(String url)
Prepare an HTTP client OPTIONS request.BoundRequestBuilder
preparePatch(String url)
Prepare an HTTP client PATCH request.BoundRequestBuilder
preparePost(String url)
Prepare an HTTP client POST request.BoundRequestBuilder
preparePut(String url)
Prepare an HTTP client PUT request.BoundRequestBuilder
prepareRequest(Request request)
Construct aRequestBuilder
using aRequest
BoundRequestBuilder
prepareRequest(RequestBuilder requestBuilder)
Construct aRequestBuilder
using aRequestBuilder
BoundRequestBuilder
prepareTrace(String url)
Prepare an HTTP client TRACE request.AsyncHttpClient
setSignatureCalculator(SignatureCalculator signatureCalculator)
Set default signature calculator to use for requests built by this client instance
-
-
-
Method Detail
-
isClosed
boolean isClosed()
Return true if closed- Returns:
- true if closed
-
setSignatureCalculator
AsyncHttpClient setSignatureCalculator(SignatureCalculator signatureCalculator)
Set default signature calculator to use for requests built by this client instance- Parameters:
signatureCalculator
- a signature calculator- Returns:
RequestBuilder
-
prepare
BoundRequestBuilder prepare(String method, String url)
Prepare an HTTP client request.- Parameters:
method
- HTTP request method type. MUST BE in upper caseurl
- A well formed URL.- Returns:
RequestBuilder
-
prepareGet
BoundRequestBuilder prepareGet(String url)
Prepare an HTTP client GET request.- Parameters:
url
- A well formed URL.- Returns:
RequestBuilder
-
prepareConnect
BoundRequestBuilder prepareConnect(String url)
Prepare an HTTP client CONNECT request.- Parameters:
url
- A well formed URL.- Returns:
RequestBuilder
-
prepareOptions
BoundRequestBuilder prepareOptions(String url)
Prepare an HTTP client OPTIONS request.- Parameters:
url
- A well formed URL.- Returns:
RequestBuilder
-
prepareHead
BoundRequestBuilder prepareHead(String url)
Prepare an HTTP client HEAD request.- Parameters:
url
- A well formed URL.- Returns:
RequestBuilder
-
preparePost
BoundRequestBuilder preparePost(String url)
Prepare an HTTP client POST request.- Parameters:
url
- A well formed URL.- Returns:
RequestBuilder
-
preparePut
BoundRequestBuilder preparePut(String url)
Prepare an HTTP client PUT request.- Parameters:
url
- A well formed URL.- Returns:
RequestBuilder
-
prepareDelete
BoundRequestBuilder prepareDelete(String url)
Prepare an HTTP client DELETE request.- Parameters:
url
- A well formed URL.- Returns:
RequestBuilder
-
preparePatch
BoundRequestBuilder preparePatch(String url)
Prepare an HTTP client PATCH request.- Parameters:
url
- A well formed URL.- Returns:
RequestBuilder
-
prepareTrace
BoundRequestBuilder prepareTrace(String url)
Prepare an HTTP client TRACE request.- Parameters:
url
- A well formed URL.- Returns:
RequestBuilder
-
prepareRequest
BoundRequestBuilder prepareRequest(Request request)
Construct aRequestBuilder
using aRequest
- Parameters:
request
- aRequest
- Returns:
RequestBuilder
-
prepareRequest
BoundRequestBuilder prepareRequest(RequestBuilder requestBuilder)
Construct aRequestBuilder
using aRequestBuilder
- Parameters:
requestBuilder
- aRequestBuilder
- Returns:
RequestBuilder
-
executeRequest
<T> ListenableFuture<T> executeRequest(Request request, AsyncHandler<T> handler)
Execute an HTTP request.- Type Parameters:
T
- Type of the value that will be returned by the associatedFuture
- Parameters:
request
-Request
handler
- an instance ofAsyncHandler
- Returns:
- a
Future
of type T
-
executeRequest
<T> ListenableFuture<T> executeRequest(RequestBuilder requestBuilder, AsyncHandler<T> handler)
Execute an HTTP request.- Type Parameters:
T
- Type of the value that will be returned by the associatedFuture
- Parameters:
requestBuilder
-RequestBuilder
handler
- an instance ofAsyncHandler
- Returns:
- a
Future
of type T
-
executeRequest
ListenableFuture<Response> executeRequest(Request request)
Execute an HTTP request.
-
executeRequest
ListenableFuture<Response> executeRequest(RequestBuilder requestBuilder)
Execute an HTTP request.- Parameters:
requestBuilder
-RequestBuilder
- Returns:
- a
Future
of type Response
-
getClientStats
ClientStats getClientStats()
Return details about pooled connections.- Returns:
- a
ClientStats
-
flushChannelPoolPartitions
void flushChannelPoolPartitions(Predicate<Object> predicate)
Flush ChannelPool partitions based on a predicate- Parameters:
predicate
- the predicate
-
getConfig
AsyncHttpClientConfig getConfig()
Return the config associated to this client.- Returns:
- the config associated to this client.
-
-