несколько запросов от одного HttpURLConnection - PullRequest
15 голосов
/ 16 марта 2010

Как я могу сделать несколько запросов в одном HttpURLConnection с Java?

 URL url = new URL("http://my.com");
 HttpURLConnection connection = (HttpURLConnection)url.openConnection();
 HttpURLConnection.setFollowRedirects( true );
 connection.setDoOutput( true );
 connection.setRequestMethod("GET"); 

 PrintStream ps = new PrintStream( connection.getOutputStream() );
 ps.print(params);
 ps.close();
 connection.connect();
 //TODO: do next request with other url, but in same connection

Спасибо.

Ответы [ 2 ]

15 голосов
/ 16 марта 2010

Из Javadoc:

Каждый экземпляр HttpURLConnection используется для создания одного запроса.

Объект явно не предназначен для повторного использования.

Помимо небольшого перерыва в памяти и неэффективности, нет большой проблемы с открытием одного соединения HttpURLC для каждого запроса, который вы хотите сделать. Однако если вам нужен эффективный сетевой ввод-вывод в более широком масштабе, лучше использовать специализированную библиотеку, например Apache HttpClient .

3 голосов
/ 20 октября 2010

Помимо правильного ответа, может быть, вам на самом деле нужно повторное использование базового TCP-соединения, то есть «постоянных соединений», которые действительно поддерживаются HttpURLConnection JDK. Поэтому вам не нужно использовать другие http-библиотеки по этой причине; хотя есть и другие законные причины, возможно, производительность (но не обязательно, зависит от варианта использования, библиотеки).

...