2010-05-24 2 views
1

Я пытаюсь написать простое клиентское приложение Http в Java и немного запутано, по-видимому, разными способами установления соединений HTTP-клиента и эффективного повторного использования объектов.Постоянное соединение HTTP-клиента в java

Current Я использую следующие шаги (я опустил обработку для простоты исключения)

Iterator<URI> uriIterator = someURIs(); 

HttpClient client = new DefaultHttpClient(); 

while (uriIterator.hasNext()) { 
    URI uri = uriIterator.next(); 

    HttpGet request = new HttpGet(uri); 

    HttpResponse response = client.execute(request); 

    HttpEntity entity = response.getEntity(); 

    InputStream content = entity.getContent(); 
    processStream (content); 
    content.close(); 
} 

В отношении приведенной выше коды, мои вопросы это:

Предполагая, что все URI являются указывая на тот же хост (но разные ресурсы на этом хосте). Каков рекомендуемый способ использования одного HTTP-соединения для всех запросов?

И как вы закрываете соединение после последнего запроса?

--edit: Я смущен, почему эти шаги не использовать HttpURLConnection, я предполагаю, client.execute() создает один, но так как я никогда не видел его, я не знаю, как закрыть его или использовать его.

+0

Я нашел полезное всестороннее руководство для класса HttpClient http://hc.apache.org/httpcomponents-client-4.0.1/tutorial/pdf/httpclient-tutorial.pdf – Akusete

ответ

5

Для того, чтобы использовать постоянное подключение эффективно, необходимо использовать и объединял диспетчер соединений,

SchemeRegistry schemeRegistry = new SchemeRegistry(); 
schemeRegistry.register(
     new Scheme("http", 80, PlainSocketFactory.getSocketFactory())); 

ClientConnectionManager cm = new ThreadSafeClientConnManager(schemeRegistry); 
HttpClient httpClient = new DefaultHttpClient(cm); 

Моя самая большая проблема с HttpURLConnection является поддержка постоянной связи (поддержания активности) очень глючит.

+0

Спасибо за информацию, для всех, кто интересуется официальная документация для этого (см. 2.8.4. Диспетчер соединений с пулами) http://hc.apache.org/httpcomponents-client-4.0.1/tutorial/pdf/httpclient-tutorial.pdf – Akusete

Смежные вопросы