wake-up-neo.com

Android HTTP-Benutzeragent

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?

36
user430926

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.

60
Nic Strong

Um die akzeptierte Antwort abzuschließen, verwenden Sie System.getProperty ("http.agent")

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

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.

13

Sie können Useragent mit Webview lesen:

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

Oder mit der Systemeigenschaft:

System.getProperty("http.agent")

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

0
Jesudas Lobo