博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android HTTP 设置UA(User-Agent)及自定义
阅读量:2113 次
发布时间:2019-04-29

本文共 2672 字,大约阅读时间需要 8 分钟。

一、什么是UA

User-Agent就是告诉网站服务器,访问者是通过什么工具来请求的,或者自定义信息、例如手机型号、系统版本、app版本、渠道号、便于我们对数据的统计

二、客户端如何设置UA

1.如果APP的网络请求时okhttp。

Request request = new Request.Builder().url(url)                             .removeHeader("User-Agent")                             .addHeader("User-Agent", WebSettings.getDefaultUserAgent(Context)                              .build();            httpClient.newCall(request).enqueue(handler);

2.如果是okhttp+retrofit。

public static MusicApi getInfoApi() {        if (musicApi == null) {            Retrofit retrofit = new Retrofit.Builder()                    .client(getOkHttpClient())//获取后的okhttp头部                    .baseUrl("http://tingapi.ting.baidu.com/v1/restserver/")                    .addConverterFactory(gsonConverterFactory)                    .addCallAdapterFactory(rxJavaCallAdapterFactory)                    .build();            musicApi = retrofit.create(MusicApi.class);        }        return musicApi;    }    /**     *  构造okhttp头部     *     * */    private static OkHttpClient getOkHttpClient() {        OkHttpClient httpClient = new OkHttpClient.Builder()                .addInterceptor(new Interceptor() {                    @Override                    public Response intercept(Chain chain) throws IOException {                        Request request = chain.request()                                .newBuilder()                                .removeHeader("User-Agent")//移除旧的                                .addHeader("User-Agent", WebSettings.getDefaultUserAgent(Context))//添加真正的头部                                .build();                        return chain.proceed(request);                    }                }).build();        return httpClient;    }

 兼容版本的获取UA

private static String getUAInfo() {        String userAgent = "";        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {            try {                userAgent = WebSettings.getDefaultUserAgent(context);            } catch (Exception e) {                userAgent = System.getProperty("http.agent");            }        } else {            userAgent = System.getProperty("http.agent");        }        StringBuffer sb = new StringBuffer();        for (int i = 0, length = userAgent.length(); i < length; i++) {            char c = userAgent.charAt(i);            if (c <= '\u001f' || c >= '\u007f') {                sb.append(String.format("\\u%04x", (int) c));            } else {                sb.append(c);            }        }        return sb.toString();    }

 以上的UA获取都是系统级的日志信息、那么我们如何自定义UA呢?

三、自定义UA

其实UA的格式是这种的"A B C D"

就是就每个信息之间含有空格的字符串就可以

例如“appVeriosn:1.0 osVersion8.0”

替换成以上UA即可完成app的http请求自定义UA

如果以上对你有帮助,还请点赞支持,光看不赞,纯属扯淡!谢谢

转载地址:http://jyvef.baihongyu.com/

你可能感兴趣的文章
阿里云《云原生》公开课笔记 第六章 应用编排与管理:Deployment
查看>>
阿里云《云原生》公开课笔记 第七章 应用编排与管理:Job和DaemonSet
查看>>
阿里云《云原生》公开课笔记 第八章 应用配置管理
查看>>
阿里云《云原生》公开课笔记 第九章 应用存储和持久化数据卷:核心知识
查看>>
linux系统 阿里云源
查看>>
国内外helm源记录
查看>>
牛客网题目1:最大数
查看>>
散落人间知识点记录one
查看>>
Leetcode C++ 随手刷 547.朋友圈
查看>>
手抄笔记:深入理解linux内核-1
查看>>
内存堆与栈
查看>>
Leetcode C++《每日一题》20200621 124.二叉树的最大路径和
查看>>
Leetcode C++《每日一题》20200622 面试题 16.18. 模式匹配
查看>>
Leetcode C++《每日一题》20200625 139. 单词拆分
查看>>
Leetcode C++《每日一题》20200626 338. 比特位计数
查看>>
Leetcode C++ 《拓扑排序-1》20200626 207.课程表
查看>>
Go语言学习Part1:包、变量和函数
查看>>
Go语言学习Part2:流程控制语句:for、if、else、switch 和 defer
查看>>
Go语言学习Part3:struct、slice和映射
查看>>
Go语言学习Part4-1:方法和接口
查看>>