- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
在 HttpClient
的早期版本中,目标主机被设置为客户端本身。在上一个版本中(对于 HttpAsyncClient
,它是 4.1.1)主机被设置为 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()
有什么区别?
谢谢!
最佳答案
默认情况下,根据 RFC 2616 规范,HttpAsyncClient 仅允许两个并发连接到同一主机。此限制与 i/o react 器内部使用的 i/o 调度线程数无关。
上面的代码最多会创建两个传出连接。
HTTP 消息管道与连接持久性本身无关,尽管管道请求执行意味着使用持久连接。
HTTP 流水线是关于消息排序的。流水线模式下的HttpAsyncClient可以发送多个请求,而无需等待每个响应。
默认模式:
C -> request1 -> S
C <- response1 <- S
C -> request2 -> S
C <- response2 <- S
流水线模式:
C -> request1 -> S
C -> request2 -> S
C <- response1 <- S
C <- response2 <- S
关于java - HttpAsyncClient 4 如何工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34505271/
我正在测试 Apache HttpAsyncClient ,特别是我想在需要身份验证的地方发出异步 HTTP POST 请求。我用this example作为引用。到目前为止,我找到了如何设置应用程序
我正在尝试在 httpAsyncClient 库中设置 cookie,但问题是我不知道如何找到它的示例..这是我的代码。 public JSONArray sendRequest(List post
我想了解有关 HttpAsyncClient 的一些基本概念。 我这里没有使用连接池,这里关闭失败的http请求的正确方法是什么(1)或(2)。 如果我用每个新请求初始化 httpclient,会对性
我想向 java 中的 servlet 发送异步 post 请求。我正在使用 apache HttpAsyncClient,如以下方法所示。当我调试时,我看到调用此方法的进程会等待,直到被调用的 se
我正在尝试使用 HttpAsyncClient 通过每秒提交一百或一千个 HTTP 请求并对每个请求的响应进行计时来对我的 Web 应用程序进行压力测试。我的代码基于 this quickstart
使用典型的 HttpAsyncClients 示例: public class AsyncClientHttpExchange { public static void main(final
在 Linux 上运行时(仅在 Linux 上尝试过),根据 lsof,以下代码似乎泄漏了 1 个 anon_inode 和 2 个管道文件描述符: CloseableHttpAsyncClient
我需要在高负载下使用 HttpAsyncClient。我这样创建 HttpAsyncClient: RequestConfig requestConfig = RequestConfig.custom
我想实现一个基于 NIO 的 aws java 客户端并且正在考虑使用 HttpAsyncClient但它处于 Alpha 3 阶段。有没有人有在任何负载下使用客户端的经验?另外,我们什么时候可以期待
我在 httpasyncclient 上使用代理,如下所示: final CloseableHttpAsyncClient httpclient = HttpAsyncClients
我的应用程序必须提供请求“转发”机制,从某种意义上说,它处理传入的请求并通过从根据请求确定的“目标”系统之一检索数据来响应它。这是通过 HttpAsyncClient 的集合来实现的,每个 HttpA
在 HttpClient 的早期版本中,目标主机被设置为客户端本身。在上一个版本中(对于 HttpAsyncClient,它是 4.1.1)主机被设置为 HttpRequest(HttpGet、Htt
与这个问题密切相关:How to use HttpClient with multithreaded operation? ,我想知道 apache HttpAsyncClient 是否是线程安全的,
使用 Apache HttpAsyncClient Beta3,当我将它加载到各种服务器的多达 50 个并发请求时,它似乎开始时很好,我处理了大约 3000 个 url。 但后来我遇到了瓶颈,我通过日
我是否需要像使用 HttpClient 那样关闭 Apache HttpAsyncClient 中的过期连接? 最佳答案 我只是仔细检查了源代码。是的,仍然必须明确地从池中驱逐过期的连接。但是,底层的
我正在用 Java 实现网络抓取工具。在尝试了一些我要抓取的网站之后,我想使用 Java 中并发 HTTP 连接的最佳实践。我目前正在使用 Jsoup's连接方法。我想知道是否可以创建线程并在这些线程
在我的 servlet 中,我正在执行以下代码: RequestConfig requestConfig = RequestConfig.custom().setSocketTimeout(3000)
package com.lt.uadb.app.resource.test; import java.util.concurrent.Future; import org.apache.http.Ht
我正在使用 HttpAsyncClient 和 Jsoup 为特定站点编写网络抓取工具。我正在使用 HttpAsyncClient 的一个实例,它执行来自不同线程的多个请求。在几次成功的请求之后,客户
我正在尝试通过 Java 使用 ElasticSearch REST API Apache HttpAsyncClient图书馆。我想使用持久流水线连接。这是一些测试代码(输出在注释中): @Test
我是一名优秀的程序员,十分优秀!