在以前版本的HttpClient
目标主机中设置为客户端本身。在上一个版本(因为它是 4.1.1)中,每次我发出请求时都会HttpAsyncClient
将主机设置为HttpRequest
(等)。HttpGet
HttpPost
我想使用持久连接,所以我使用HttpAsyncClient
. 我像这样创建和使用它:
CloseableHttpAsyncClient client = HttpAsyncClients.createDefault();
client.start();
List<Future<HttpResponse>> responses = new ArrayList<>();
for (int i = 0; i < 10; i++)
{
HttpGet get = new HttpGet("https://google.com/");
responses.add(client.execute(get, null));
}
for (Future<HttpResponse> response : responses) {
response.get(); //wait for the response
}
正如我测试的那样,它比平时运行得更快HttpClient
(如果我完成所有请求,然后等待所有响应)。
但我不能完全理解,它是如何在内部工作的。建立了多少个连接https://google.com/
?如果我client
先用于一台主机,然后再用于另一台主机,会发生什么情况?(正如我测试的那样,响应可以按任何顺序出现,所以我想至少有 2 个并行连接)。HttpAsyncClients.createDefault()
和有什么区别HttpAsyncClients.createPipelining()
?
谢谢!