2010-10-11 16 views
35

Jak uzyskać prawdziwe urządzenie w http_user_agent? Kiedy użyć WebView, mogę uzyskać rzeczywistą wartość takiego:Użytkownik HTTP HTTP User Agent

[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 

Ale kiedy użyć połączenia Apache, wynik jest inny:

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

czym problem?

Odpowiedz

60

Jeśli nie chcesz wywoływać setHeader() dla każdego utworzonego żądania, możesz ustawić parametr klienta http CoreProtocolPNames.USER_AGENT. Po wykonaniu tego klient HTTP automatycznie doda ten parametr nagłówka do każdego żądania.

Coś jak:

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

podczas tworzenia HttpClient.

13

Jeśli chcesz ustawić własny nagłówek agenta użytkownika, musisz użyć metody setHeader.

W przypadku żądania HTTP Post po prostu ustawiono w ten sposób.

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

To było krótkie wyjaśnienie, jak ustawić niestandardowy ciąg agenta użytkownika. Twój kod może wyglądać inaczej. Ważną częścią jest metoda setHeader.

+0

W tym przypadku, nie chce ustawić własny użytkownikowi agent. Chcę, żeby to było automatyczne, tak jak w WebView. Czy istnieje jakieś rozwiązanie? Dzięki. – user430926

+0

Właściwie nie powinieneś używać innych agentów użytkownika HTTP, ponieważ niektóre serwery obsługują różne treści w zależności od klienta użytkownika (np. Zoptymalizowana treść dla tej przeglądarki). – Tseng

+0

Cóż, jeśli masz specjalny przypadek, w którym masz usługę zależną od użytkownika niestandardowego ciąg agenta, wtedy nie ma możliwości obejścia. –

67

Aby zakończyć zaakceptowane odpowiedź, jeśli chcesz agent domyślny użytkownik używać System.getProperty („http.agent”)

client.getParams().setParameter(CoreProtocolPNames.USER_AGENT, 
           System.getProperty("http.agent")); 
+7

ta jest lepszą odpowiedzią niż powyższe odpowiedzi! dzięki! –

+2

Pozostałe odpowiedzi nie odpowiadają na pytanie. Dzięki! – dtbarne

Powiązane problemy