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

StackOverflow https://stackoverflow.com/questions/331538

  •  11-07-2019
  •  | 
  •  

Вопрос

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

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

Это было полезно?

Решение

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

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

См. URLConnection JavaDoc.

Другие советы

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top