Как повторно использовать соединение httpclient, чтобы получить несколько небольших файлов - PullRequest
2 голосов
/ 22 августа 2011

Я использую httpclient для непрерывной загрузки нескольких небольших файлов с сервера. Поэтому я хочу повторно использовать соединение httpclient, чтобы не тратить много времени на выделение нового соединения.

И у меня уже есть некоторый клиентский код, чтобы попытаться повторно использовать соединение, и установить время простоя существующего соединения на 3 минуты.

Однако ответ от сервера всегда содержит «Соединение: закрыть [\ r] [\ n]», библиотека httpclient освобождает соединение сразу после того, как оно встречает такой заголовок.

Как мне сделать, чтобы httpclient игнорировал ответ от сервера, или какой заголовок, который я публикую, мог позволить серверу больше не возвращать такой закрывающий заголовок?

Ответы [ 2 ]

4 голосов
/ 22 августа 2011

Даже если вам удастся игнорировать заголовок Connection: close, я не думаю, что будет хорошей идеей "нарушить" директиву.

RFC говорит следующий

HTTP / 1.1 определяет опцию «закрыть» соединение для отправителя, чтобы сообщить, что соединение будет закрыто после завершения ответа.Например,

   Connection: close

в полях заголовка запроса или ответа указывает, что соединение НЕ СЛЕДУЕТ считать «постоянным» (раздел 8.1) после завершения текущего запроса / ответа.

1 голос
/ 22 августа 2011

Вам необходимо добавить заголовок keep-alive к вашим HTTP-запросам.

http://download.oracle.com/javase/1.5.0/docs/guide/net/http-keepalive.html
http://tools.ietf.org/html/rfc1122#page-101
http://httpd.apache.org/docs/1.3/keepalive.html

...