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?
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
.
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"));
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
.
Vous pouvez lire useragent en utilisant webview:
new WebView(this).getSettings().getUserAgentString();
Ou en utilisant la propriété système:
System.getProperty("http.agent")