我正在构建一个 Android 应用程序来显示来自服务器的内容源。服务器是一个移动网站(例如http://m.google.com),它跟踪来自各种移动客户端的流量。为了区分 Android 客户端,如何为我的应用程序提供通用字符串?
这就是我问这个的原因:
我得到的一些 Android 设备具有 UA 字符串,例如:
Mozilla/5.0 (Linux; U; Android 2.2.1; en-us; ADR6400L 4G Build/FRG83D) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1
Mozilla/5.0(Linux;U;Android 2.1;en-us;Eclair_SPR Build/30201)AppleWebKit/520.17(KHTML,如 Gecko)版本/4.0 Mobile Safari/520.17
要更改用户代理,您需要在 HTTP 请求中发送自定义 User-Agent: 标头。假设您使用 Android org.apache.http.client.HttpClient 类,您有两个选择:
- 在每个请求上设置用户代理标头。您可以通过在创建 HttpRequest(HttpPost、HttpGet 等)对象后调用 setHeader() 来完成此操作:
HttpGet get = new HttpGet(url);
get.setHeader("User-Agent", myUserAgent);
- 更改默认的用户代理参数,这将影响该 HttpClient 类的所有未来实例。为此,您可以使用 getParams() 从客户端读取 HttpParams 集合,然后使用 setParameter() 更新用户代理:
DefaultHttpClient http = new DefaultHttpClient();
http.getParams().setParameter(CoreProtocolPNames.USER_AGENT, myUserAgent);
如果您想追加而不是替换用户代理,您可以先读取现有用户代理,更改它,然后使用上述任一方法将其设置回来。
EDIT:
既然您说您正在使用 WebView 视图,您将需要在那里使用 WebSettings 自定义点。基本上是相同的过程。在调用任何 load() 方法(loadUrl、loadData 等)之前,您需要设置用户代理。只要 WebView 实例存在,更改后的用户代理就会持续存在,因此您可以在 Activity 的 onCreate() 中执行此操作:
view = (WebView)findViewById(R.id.webview);
view.getSettings().setUserAgentString(myUserAgent);
同样,如果您想追加而不是替换,请使用 getUserAgentString() 读取它,然后更新它并再次将其设置回来。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)