2010-10-11 54 views
35

我如何在HTTP_USER_AGENT真實的設備? 當我使用的WebView,我能得到這樣的真正價值:Android的HTTP用戶代理

[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 

但是,當我使用Apache連接,其結果是不同的:

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

什麼問題?

回答

60

如果您不想打電話setHeader()爲每個請求創建你可以設置HTTP客戶端參數CoreProtocolPNames.USER_AGENT。完成此操作後,HTTP客戶端會自動將此標頭參數添加到每個請求中。

喜歡的東西:

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

當您創建HttpClient

13

如果你想設置自己的用戶代理頭,那麼你必須使用setHeader方法。

在HTTP後的情況下,請您只需設置像這樣。

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

這只是一個簡單的說明如何設置自定義用戶代理字符串。你的代碼可能看起來不同。重要的部分是setHeader方法。

+0

在這種情況下,我不想把我自己的用戶劑。我希望它像我在WebView中一樣是自動的。有沒有解決方法?謝謝。 – user430926 2010-10-11 08:57:44

+0

其實你不應該用其他的HTTP客戶端用戶代理,一些服務器服務取決於用戶代理(適用於IE瀏覽器優化的內容)不同的內容 – Tseng 2010-10-11 09:58:20

+0

那麼如果你有,你必須依賴於一個自定義用戶的服務的特殊情況代理字符串然後是沒有辦法。 – 2010-10-11 10:57:12

67

要完成接受的答案,如果你想要的默認用戶代理使用System.getProperty(「http.agent」)

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

這個人是不是上面的答案更好的答案!謝謝! – 2013-03-20 15:09:00

+2

其他答案不回答這個問題。謝謝! – dtbarne 2014-02-21 15:46:24