Как правильно установить заголовки в URLConnection?
-
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. Р>