Перенаправление HttpURLConnection не использует свойства запроса исходного соединения

#java #user-agent

#java #пользовательский агент

Вопрос:

Настройка свойств соединения не переносится на перенаправленные соединения

 HttpURLConnection mConnection = (HttpURLConnection) url.openConnection();
mConnection = addRequestProperty("User-Agent", "Mozilla");

InputStream stream = mConnection.getInputStream();
  

если есть код 302, mConnection перенаправляется, но пользовательский агент является "Java/1.5.0_28" .

Есть предложения, как с этим справиться?

Комментарии:

1. вы имели в виду опубликовать mConnection.addRequestProperty() вместо mConnection = addRequestProperty() ?

2. да, так и должно было быть.

Ответ №1:

Это не изменилось, так все и начиналось.

addRequestProperty() не переопределяет значение по умолчанию. Используйте setRequestProperty() вместо этого.

 HttpURLConnection mConnection = (HttpURLConnection) url.openConnection();
mConnection.setRequestProperty("User-Agent", "Mozilla");
  

Комментарии:

1. На самом деле это правильно, используя add или set для первого соединения. Когда базовый код обнаруживает перенаправление, пользовательский агент возвращается к значению по умолчанию.

2. Нет, это не так. У вас не может быть нескольких строк пользовательского агента. Add не заменяет то, которое уже есть, оно добавляет еще одно.

3. Свойства указаны для каждого соединения. При перенаправлении создается НОВОЕ соединение, но свойства не копируются из старого соединения в новое. Я использовал анализатор, чтобы увидеть фактические пакеты, поэтому я знаю, что это происходит.