gpt4 book ai didi

android - 使用 Volley 在 Android 中调整用户代理

转载 作者:可可西里 更新时间:2023-11-01 16:37:58 25 4
gpt4 key购买 nike

我想知道如何在我的 http 请求中调整标准用户代理。我正在使用 Volley 库并且我知道如何使用

  • 设置一个新的用户代理
  • 以字符串形式检索默认用户代理(例如“Dalvik/1.6.0 (Linux; U; Android 4.0.2; sdk Build/ICS_MR0”) => System.getProperty("http.agent")

我不知道的是:

  • 如何获取构建此用户代理的单个元素,以便我可以仅将字符串“Dalvik/1.6.0”替换为自定义字符串。

这可能吗,还是我必须进行字符串替换?

谢谢

最佳答案

为了为所有通过 volley 发送的请求全局设置用户代理,这是我的解决方案:

当您初始化 volley 请求队列时,不要使用方便的方法 Volley.newRequestQueue(Context); ,使用以下代码段:

    private RequestQueue makeRequestQueue(Context context) {
DiskBasedCache cache = new DiskBasedCache(new File(context.getCacheDir(), DEFAULT_CACHE_DIR), DISK_CACHE_SIZE);
BasicNetwork network = new BasicNetwork(new MyHurlStack());
RequestQueue queue = new RequestQueue(cache, network);
queue.start();
return queue;
}

public static class MyHurlStack extends HurlStack {

@Override
public HttpResponse executeRequest(Request<?> request, Map<String, String> additionalHeaders) throws IOException, AuthFailureError {
if (additionalHeaders == null || Collections.emptyMap().equals(additionalHeaders) {
additionalHeaders = new HashMap<>();
}
additionalHeaders.put("User-Agent", "test_user_agent_in_volley");
return super.executeRequest(request, additionalHeaders);
}
}

此解决方案假定您的目标是 api 级别 >= 9,因此我们使用 HurlStack

之所以可行,是因为在 HurlStack.executeRequest(Request<?> request, Map<String, String> additionalHeaders) 中方法,您添加到 additionalHeaders 的内容稍后将添加到 HttpUrlConnection 请求属性,如 connection.addRequestProperty(headerName, map.get(headerName));

关于android - 使用 Volley 在 Android 中调整用户代理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22931544/

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