Пользовательский агент Android HTTP
Как получить реальное устройство в http_user_agent?
Когда я использую WebView, я могу получить реальное значение следующим образом:
[HTTP_USER_AGENT] => Mozilla/5.0(Linux; U; Android 2.2; en-gb; LG-P500 Build/FRF91)
AppleWebKit/533.0 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1
Но когда я использую соединение Apache, результат отличается:
[HTTP_USER_AGENT] => Apache-HttpClient/UNAVAILABLE(java 1.4).
В чем проблема?
Ответы
Ответ 1
Если вы не хотите вызывать setHeader()
для каждого создаваемого вами запроса, вы можете установить параметр http client CoreProtocolPNames.USER_AGENT
. После этого HTTP-клиент автоматически добавит этот параметр заголовка к каждому запросу.
Что-то вроде:
client.getParams().setParameter(CoreProtocolPNames.USER_AGENT, "Custom user agent");
при создании HttpClient
.
Ответ 2
Чтобы завершить принятый ответ, если вы хотите, чтобы пользовательский агент по умолчанию использовал System.getProperty( "http.agent" )
client.getParams().setParameter(CoreProtocolPNames.USER_AGENT,
System.getProperty("http.agent"));
Ответ 3
Если вы хотите установить свой собственный заголовок пользовательского агента, вы должны использовать метод setHeader
.
В случае запроса HTTP-сообщения вы просто устанавливаете его так.
private String url = "http://myfancyurl.com/";
private String ua = "My Custom UA Header String";
private HttpPost post = new HttpPost(url);
post.setHeader("User-Agent", ua);
Это было просто краткое объяснение того, как установить пользовательскую строку пользовательского агента. Ваш код может выглядеть иначе. Важной частью является метод setHeader
.
Ответ 4
Вы можете прочитать useragent с помощью webview:
new WebView(this).getSettings().getUserAgentString();
Или используя системное свойство:
System.getProperty("http.agent")
Источник: fooobar.com/info/659054/...