Подтвердить что ты не робот

Каков правильный способ установки заголовков в URLConnection?

Мой код выглядит следующим образом:

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 по умолчанию (если он есть)?

4b9b3361

Ответ 1

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

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

Смотрите URLConnection JavaDoc.

Ответ 2

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

Обратите внимание на пользовательский агент, если вы его не установили, URLConnection по умолчанию отправит по умолчанию:

User-Agent: Java/1.6.0_24 (varies depending on your java version)

Ответ 3

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