1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27 package org.apache.hc.client5.http.examples;
28
29 import java.util.concurrent.Future;
30
31 import org.apache.hc.client5.http.async.methods.SimpleHttpRequest;
32 import org.apache.hc.client5.http.async.methods.SimpleHttpRequests;
33 import org.apache.hc.client5.http.async.methods.SimpleHttpResponse;
34 import org.apache.hc.client5.http.impl.async.CloseableHttpAsyncClient;
35 import org.apache.hc.client5.http.impl.async.HttpAsyncClients;
36 import org.apache.hc.core5.concurrent.FutureCallback;
37 import org.apache.hc.core5.http.HttpHost;
38 import org.apache.hc.core5.io.CloseMode;
39 import org.apache.hc.core5.reactor.IOReactorConfig;
40 import org.apache.hc.core5.util.Timeout;
41
42
43
44
45 public class AsyncClientHttpExchange {
46
47 public static void main(final String[] args) throws Exception {
48
49 final IOReactorConfig ioReactorConfig = IOReactorConfig.custom()
50 .setSoTimeout(Timeout.ofSeconds(5))
51 .build();
52
53 final CloseableHttpAsyncClient client = HttpAsyncClients.custom()
54 .setIOReactorConfig(ioReactorConfig)
55 .build();
56
57 client.start();
58
59 final HttpHost target = new HttpHost("httpbin.org");
60 final String[] requestUris = new String[] {"/", "/ip", "/user-agent", "/headers"};
61
62 for (final String requestUri: requestUris) {
63 final SimpleHttpRequest httpget = SimpleHttpRequests.get(target, requestUri);
64 System.out.println("Executing request " + httpget.getMethod() + " " + httpget.getUri());
65 final Future<SimpleHttpResponse> future = client.execute(
66 httpget,
67 new FutureCallback<SimpleHttpResponse>() {
68
69 @Override
70 public void completed(final SimpleHttpResponse response) {
71 System.out.println(requestUri + "->" + response.getCode());
72 System.out.println(response.getBody());
73 }
74
75 @Override
76 public void failed(final Exception ex) {
77 System.out.println(requestUri + "->" + ex);
78 }
79
80 @Override
81 public void cancelled() {
82 System.out.println(requestUri + " cancelled");
83 }
84
85 });
86 future.get();
87 }
88
89 System.out.println("Shutting down");
90 client.close(CloseMode.GRACEFUL);
91 }
92
93 }