2

我正在使用 httpclient 从服务器连续下载多个小文件。所以我想重用httpclient连接以避免花费大量时间来分配新连接。

而且我已经有一些客户端代码尝试重用连接,并将现有连接的空闲超时设置为 3 分钟。

然而,来自服务器的响应总是包含“Connection: close[\r][\n]”,httpclient 库在遇到此类标头后立即释放连接。

如何让 httpclient 忽略来自服务器的响应,或者我发布的哪个标头可以让服务器不再返回这样的关闭标头?

4

2 回答 2

4

即使您设法忽略Connection: close标题,我认为“违反”指令也不是一个好主意。

RFC 说如下

HTTP/1.1 为发送者定义了“关闭”连接选项,以表明在响应完成后连接将被关闭。例如,

   Connection: close

在请求或响应标头字段中表示在当前请求/响应完成后,连接不应被视为“持久”(第 8.1 节)。

于 2011-08-22T09:36:38.523 回答
1

您需要在 HTTP 请求中添加 keep-alive 标头。

http://download.oracle.com/javase/1.5.0/docs/guide/net/http-keepalive.html
https://www.rfc-editor.org/rfc/rfc1122#page-101
http:// httpd.apache.org/docs/1.3/keepalive.html

于 2011-08-22T11:19:05.997 回答