HttpURLConnection в андроиде не отправляет корректный [закрытый] заголовок Агента пользователя

После работы с кем-то, кто был частично слепым - и в его запросе - я переключился на использование значительно большего количества пробелов. Мне не нравился он в то время, но теперь я предпочитаю его. Первое, что пришло на ум единственное место, где нет пробела между идентификаторами и ключевыми словами и этажеркой, после имя функции и перед следующими круглыми скобками.

void foo( int a, int b )
{
  int c = a + ( a * ( a * b ) );
  if ( c > 12 )
    c += 9;
  return foo( 2, c );
}
6
задан Glorfindel 22 April 2019 в 22:49
поделиться

2 ответа

В спецификации HTTP указано, что все клиенты должны отправлять User-Agent заголовки. Однако в нем не говорится, что они должны идентифицировать клиента так, как желает сервер. Таким образом, Android соответствует спецификации, и вы мало что можете с этим поделать.

Лучшее, что вы могли сделать, - это использовать метод setRequestProperty () , чтобы попытаться получить предпочтительное значение пользовательского агента в запросе. Нет никаких гарантий, что это сработает, но вполне вероятно. Метод необходимо вызывать следующим образом:

connection.setRequestProperty("User-Agent","MyAppName/1.0");

Стандартный браузер Android использует WebKit. Если вы хотите установить строку пользовательского агента WebKit, вам придется либо использовать статическое значение, либо прочитать строку пользовательского агента из WebKit. Я не пытался это сделать, но строка пользовательского агента WebKit доступна в Android через метод getUserAgentString () класса WebSettings .

Метод необходимо вызывать следующим образом:

connection.setRequestProperty("User-Agent","MyAppName/1.0");

Стандартный браузер Android использует WebKit. Если вы хотите установить строку пользовательского агента WebKit, вам придется либо использовать статическое значение, либо прочитать строку пользовательского агента из WebKit. Я не пытался это сделать, но строка пользовательского агента WebKit доступна в Android через метод getUserAgentString () класса WebSettings .

Метод необходимо вызывать следующим образом:

connection.setRequestProperty("User-Agent","MyAppName/1.0");

Стандартный браузер Android использует WebKit. Если вы хотите установить строку пользовательского агента WebKit, вам придется либо использовать статическое значение, либо прочитать строку пользовательского агента из WebKit. Я не пытался это сделать, но строка пользовательского агента WebKit доступна в Android через метод getUserAgentString () класса WebSettings .

10
ответ дан 16 December 2019 в 21:43
поделиться

неправильно, если HttpURLConnection подделал пользовательский агент браузера. в конце концов, это не браузер. было бы неплохо, если бы он отправил немного больше информации, например, "Java / 1.6 (MacOS 10.5 ..." и т. д.

-2
ответ дан 16 December 2019 в 21:43
поделиться
Другие вопросы по тегам:

Похожие вопросы: