Я пытаюсь записать программу Java, которая автоматически загрузит и назовет некоторые мои любимые веб-комиксы. Так как я буду запрашивать несколько объектов от того же домена, я хотел иметь персистентное http соединение, что я мог сохранить открытым, пока все комиксы не были загружены. Ниже мое происходящее работой. Как я выполняю другой запрос от того же доменного, но другого пути, не открывая новое http соединение?
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
public class ComicDownloader
{
public static void main(String[] args)
{
URL url = null;
HttpURLConnection httpc = null;
BufferedReader input = null;
try
{
url = new URL("http://www.cad-comic.com/cad/archive/2002");
httpc = (HttpURLConnection) url.openConnection();
input = new BufferedReader(new InputStreamReader(httpc.getInputStream()));
String inputLine;
while ((inputLine = input.readLine()) != null)
{
System.out.println(inputLine);
}
input.close();
httpc.disconnect();
}
catch (IOException ex)
{
System.out.println(ex);
}
}
}
Согласно документации здесь , сохраняемость HTTP прозрачно обрабатывается в Java, хотя и дает вам возможность управлять им через http.keepAlive
и http.maxConnections
системные свойства.
Однако
Текущая реализация не буфер тела ответа. Что значит что приложение должно закончить чтение тела ответа или звонка close (), чтобы отказаться от остальной части тело ответа, для этого соединение для повторного использования. Более того, текущая реализация не буду пробовать чтение блока при очистке связь, то есть если все тело ответа недоступно, соединение не будет использоваться повторно.
Взгляните на ссылку и посмотрите, действительно ли она вам поможет.