Как правильно установить заголовки в URLConnection? - PullRequest
19 голосов
/ 01 декабря 2008

Мой код похож на следующий:

URLConnection cnx = address.openConnection();
cnx.setAllowUserInteraction(false);         
cnx.setDoOutput(true);
cnx.addRequestProperty("User-Agent", 
    "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)");
InputStream is = cnx.getInputStream();

Это нормально, если я установлю заголовки до того, как получу InputStream? Будет ли отправлен мой заголовок или сервер увидит пользовательский агент по умолчанию URLConnection (если есть)?

Ответы [ 3 ]

21 голосов
/ 01 декабря 2008

Заголовки должны быть установлены до того, как InputStream окажет какое-либо влияние - IllegalStateException будет брошено, если соединение уже открыто.

Что касается заголовка User-Agent, его следует отправить, если он был установлен.

См. URLConnection JavaDoc.

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

Чтобы ответить на вопрос, код правильный. В тот момент, когда getInputStream () отправляет HTTP-запрос на целевой сервер.

Примечание пользователя-агента, если вы его не установите, URLConnection все равно отправит сообщение по умолчанию:

User-Agent: Java/1.6.0_24 (varies depending on your java version)
0 голосов
/ 13 сентября 2012

Я бы не советовал использовать низкоуровневые конструкции, такие как URLConnection. Существует множество библиотек для отправки HTTP-запросов, наиболее выдающимся из которых является Apache HTTP Client.

...