2010-10-11 58 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