web-dev-qa-db-fra.com

Agent utilisateur HTTP Android

Comment obtenir le périphérique réel dans http_user_agent? Lorsque j'utilise une WebView, je peux obtenir la valeur réelle comme ceci: 

[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

Mais lorsque j'utilise une connexion Apache, le résultat est différent: 

[HTTP_USER_AGENT] => Apache-HttpClient/UNAVAILABLE(Java 1.4).

Quel est le problème?

36
user430926

Si vous ne souhaitez pas appeler setHeader() pour chaque demande que vous créez, vous pouvez définir le paramètre client http CoreProtocolPNames.USER_AGENT. Après cela, le client HTTP ajoutera automatiquement ce paramètre d’en-tête à chaque demande.

Quelque chose comme:

client.getParams().setParameter(CoreProtocolPNames.USER_AGENT, "Custom user agent");

lorsque vous créez votre HttpClient.

60
Nic Strong

Pour compléter la réponse acceptée, si vous voulez que l'agent utilisateur par défaut utilise System.getProperty ("http.agent")

client.getParams().setParameter(CoreProtocolPNames.USER_AGENT,
                                System.getProperty("http.agent"));
69
Maragues

Si vous souhaitez définir votre propre en-tête d'agent d'utilisateur, vous devez utiliser la méthode setHeader.

Dans le cas d'une requête HTTP Post, vous devez simplement le définir comme ceci.

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);

Il s’agissait d’une brève explication sur la manière de définir une chaîne d’agent utilisateur personnalisée. Votre code peut sembler différent. La partie importante est la méthode setHeader.

13
Octavian Damiean

Vous pouvez lire useragent en utilisant webview:

new WebView(this).getSettings().getUserAgentString();

Ou en utilisant la propriété système:

System.getProperty("http.agent")

Source: https://stackoverflow.com/a/50610164/3317927

0
Jesudas Lobo