gpt4 book ai didi

Android 通用用户代理 (UA)

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:00:39 28 4
gpt4 key购买 nike

我正在构建一个 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, like Gecko) Version/4.0 Mobile Safari/520.17

我需要将一个字符串附加到 UserAgent 字符串以标识我的应用程序。例如:

我需要做这样的事情:Mozilla/5.0 (Linux; U; Android 2.1; en-us; Eclair_SPR Build/30201) AppleWebKit/520.17 (KHTML, like Gecko) Version/4.0 Mobile Safari/520.17 Android_MyFirstApp

这是正确的做法吗?

最佳答案

要更改用户代理,您需要在 HTTP 请求中发送自定义 User-Agent: header 。假设您使用的是 Android org.apache.http.client.HttpClient 类,您有两个选择:

  1. 为每个请求设置用户代理 header 。您可以通过在创建 HttpRequest(HttpPost、HttpGet 等)对象后调用 setHeader() 来完成此操作:
HttpGet get = new HttpGet(url);get.setHeader("User-Agent", myUserAgent);
  1. 更改默认的用户代理参数,这将影响该 HttpClient 类的所有 future 实例。为此,您可以使用 getParams() 从客户端读取 HttpParams 集合,然后使用 setParameter() 更新用户代理:
DefaultHttpClient http = new DefaultHttpClient(); http.getParams().setParameter(CoreProtocolPNames.USER_AGENT, myUserAgent);

如果你想追加而不是替换用户代理,你可以先读取现有的用户代理,更改它,然后使用上述任一方法将其设置回去。

编辑:

既然您说您正在使用 WebView View ,那么您将需要在那里使用 WebSettings 自定义点。这基本上是相同的过程。在调用任何 load() 方法(loadUrl、loadData 等)之前,您需要设置用户代理。只要 WebView 的实例存在,更改后的用户代理就会持续存在,因此您可以在 Activity 的 onCreate() 中执行此操作:

view = (WebView)findViewById(R.id.webview);view.getSettings().setUserAgentString(myUserAgent);

同样,如果您想追加而不是替换,请使用 getUserAgentString() 读取它,然后更新它并再次将其设置回去。

关于Android 通用用户代理 (UA),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5669045/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com