我正在使用 httpclient 从服务器连续下载多个小文件。所以我想重用httpclient连接以避免花费大量时间来分配新连接。
而且我已经有一些客户端代码尝试重用连接,并将现有连接的空闲超时设置为 3 分钟。
然而,来自服务器的响应总是包含“Connection: close[\r][\n]”,httpclient 库在遇到此类标头后立即释放连接。
如何让 httpclient 忽略来自服务器的响应,或者我发布的哪个标头可以让服务器不再返回这样的关闭标头?
我正在使用 httpclient 从服务器连续下载多个小文件。所以我想重用httpclient连接以避免花费大量时间来分配新连接。
而且我已经有一些客户端代码尝试重用连接,并将现有连接的空闲超时设置为 3 分钟。
然而,来自服务器的响应总是包含“Connection: close[\r][\n]”,httpclient 库在遇到此类标头后立即释放连接。
如何让 httpclient 忽略来自服务器的响应,或者我发布的哪个标头可以让服务器不再返回这样的关闭标头?
即使您设法忽略Connection: close
标题,我认为“违反”指令也不是一个好主意。
RFC 说如下
HTTP/1.1 为发送者定义了“关闭”连接选项,以表明在响应完成后连接将被关闭。例如,
Connection: close
在请求或响应标头字段中表示在当前请求/响应完成后,连接不应被视为“持久”(第 8.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