Myappname( Linux; U; Android 4.3; galaxy Nexus Build / JWR66Y)
请注意,我不想更改user-agnet字符串中的其他参数
我用截击请求.
有任何动态建议吗?
解决方法 我想在我的AndroID应用程序中做同样的事情.也就是说,修改User-Agent标头但仅添加/添加某些内容并保留“原始”内容(或大部分内容).@athor答案的问题在于,如果仔细观察,volley在使用httpClIEntStack时仅使用userAgent字符串,这适用于使用AndroID API Level 8较低的设备(换句话说,在少数情况下).对于API级别9或更高级别,它使用HurlStack,或者堆栈或您自己的,如果您将其作为newRequestQueue的参数传递,在我的情况下,在大多数情况下,可能是HurlStack的子类,例如OkhttpStack.
这些,不使用你在那里看到的userAgent字符串,据我所知,不提供设置用户代理的方法.
我最终做的是,在我的一个Volley的Request< T>子类中,我覆盖了getheaders方法,并对User-Agent头进行了必要的调整.以下是将应用程序的名称和版本添加到原始User-Agent标头的代码段.
@OverrIDepublic Map<String,String> getheaders() throws AuthFailureError { Map<String,String> headers = super.getheaders(); if (headers == null || headers.equals(Collections.emptyMap())) { headers = new HashMap<String,String>(); } if (context != null) { StringBuilder label = new StringBuilder(); label.append(context.getApplicationInfo().loadLabel(context.getPackageManager())); label.append("/"); try { PackageInfo pInfo = context.getPackageManager().getPackageInfo(context.getPackagename(),0); label.append(pInfo.versionname); } catch (nameNotFoundException e) { } label.append(" "); label.append(System.getProperty("http.agent")); headers.put("User-Agent",label.toString()); } return headers;}
请注意,我正在使用System.getProperty(“http.agent”)来访问“原始”User-Agent标头,因为我找不到其他方法.当然,您可以尝试修改此字符串以删除Dalvik / 1.6.0,但我不知道这是否100%安全.
另外,请注意我正在使用AndroID Context来阅读应用名称和版本.
希望这可以帮助!
总结以上是内存溢出为你收集整理的android – 用volley替换user-agent中的appname全部内容,希望文章能够帮你解决android – 用volley替换user-agent中的appname所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)