Wie bekomme ich das reale Gerät in http_user_agent? Wenn ich ein WebView verwende, kann ich den tatsächlichen Wert folgendermaßen erhalten:
[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
Wenn ich eine Apache-Verbindung verwende, ist das Ergebnis anders:
[HTTP_USER_AGENT] => Apache-HttpClient/UNAVAILABLE(Java 1.4).
Was ist das Problem?
Wenn Sie setHeader()
nicht für jede von Ihnen erstellte Anforderung aufrufen möchten, können Sie den http-Clientparameter CoreProtocolPNames.USER_AGENT
einstellen. Danach fügt der HTTP-Client diesen Header-Parameter automatisch zu jeder Anfrage hinzu.
So etwas wie:
client.getParams().setParameter(CoreProtocolPNames.USER_AGENT, "Custom user agent");
wenn Sie Ihre HttpClient
erstellen.
Um die akzeptierte Antwort abzuschließen, verwenden Sie System.getProperty ("http.agent")
client.getParams().setParameter(CoreProtocolPNames.USER_AGENT,
System.getProperty("http.agent"));
Wenn Sie einen eigenen User Agent-Header festlegen möchten, müssen Sie die setHeader
-Methode verwenden.
Im Falle einer HTTP-Post-Anfrage setzen Sie diese einfach so.
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);
Dies ist nur eine kurze Erklärung zum Festlegen einer benutzerdefinierten Benutzeragentenzeichenfolge. Ihr Code könnte anders aussehen. Der wichtige Teil ist die setHeader
-Methode.
Sie können Useragent mit Webview lesen:
new WebView(this).getSettings().getUserAgentString();
Oder mit der Systemeigenschaft:
System.getProperty("http.agent")