某些API应该是服务器设置了限制,使得手机端okhttp作为 http客户端时,获取数据,服务器返回HTTP 403禁止访问。

服务器禁止访问了,因为okhttp并不是真正的原生的http请求,它在header中并没有真正的User-Agent,而是“okhttp/版本号”。

如果是单纯的okHttp请求,不加Retrofit的

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

如果是okHttp+Retrofit

public class NetWork {
 
    private static MusicApi musicApi;
    private static Converter.Factory gsonConverterFactory = GsonConverterFactory.create();
    private static CallAdapter.Factory rxJavaCallAdapterFactory = RxJava2CallAdapterFactory.create();
 
 
    public static MusicApi getMusicApi() {
        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(App.getINSTANCE()))//添加真正的头部
                                .build();
                        return chain.proceed(request);
                    }
                }).build();
        return httpClient;
    }
}

附上常见浏览器User-Agent大全

参考:https://www.jianshu.com/p/4132b381f07e

参考:https://blog.csdn.net/dubo_csdn/article/details/90478831

retrofit2.adapter.rxjava2.HttpException: HTTP 403 Forbidden相关推荐

  1. retrofit2.adapter.rxjava.HttpException: HTTP 500 Internal Server Error

    09-12 13:51:34.396 27715-27715/com.moreunion.zhenghao I/x_log:HttpParams.getParmes(L:38): =====编号=== ...

  2. android retrofit2.0 rxjava2,Android - 网络请求之 Retrofit2 + RxJava

    老婆保佑,代码无BUG 目录 引用 与其他开源请求库对比 Retrofit注解 使用 GET请求 POST请求 Retrofit2 + RxJava 基础使用 优化 封装Retrofit2 + RxJ ...

  3. 鸿蒙开发之网络框架搭建,MVP+Retrofit2+okhttp3+Rxjava2+RxHarmony

    抓住人生中的一分一秒,胜过虚度中的一月一年! 小做个动图开篇引题 鸿蒙背景 2020年9月10号,鸿蒙2.0(HarmonyOS 2.0)系统正式发布,鸿蒙2.0面向应用开发者发布Beta版本,在20 ...

  4. 解决github push错误403 Forbidden while accessing

    业务场景 我原来在github上创建了一个repository,名称为github_test,我上传了一些文件.但是几年后,我想再次利用该repository,更新并上传文件. 我在一台虚拟机上面gi ...

  5. nginx 403 forbidden 二种原因

    1,缺少index.html或者index.php文件 server { listen       80; server_name  localhost; index  index.php index ...

  6. [Hihocoder 1289] 403 Forbidden (微软2016校园招聘4月在线笔试)

    传送门 #1289 : 403 Forbidden 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 Little Hi runs a web server. Someti ...

  7. img 标签 访问图片 返回403 forbidden问题

    之前在项目里,本地调试的时候,图片src引用了第三方网站的图片资源,导致控制台出现了如下的报错: 403 forbidden,说明了这个网络资源这样获取是被拒绝的,那么通过简单的百度,找到了相关的解决 ...

  8. 解决github push错误The requested URL returned error: 403 Forbidden while accessing(转)

    github push错误: git push error: The requested URL returned error: 403 Forbidden while accessing https ...

  9. 配置https后访问返回403 forbidden

    今天在配置https的时候配置好,http能访问,https访问返回403 forbidden: 网上找了很多,改nginx.conf的user的 修改配置文件的 其实就是权限问题,是网站根目录的权限 ...

最新文章

  1. java诡异的String.split()方法
  2. JAVA构造器的实际使用
  3. Java初学者需掌握的4大核心基础知识
  4. Planar Homography (共面点成像) Epipolar Geometry(对极几何)
  5. 2021牛客NOIP提高组OI赛前模拟赛第一场T2——牛牛和数组操作(区间dp)
  6. springboot 订单重复提交_瞬间几千次的重复提交,我用Spring Boot+Redis扛住了
  7. Android应用程序线程消息循环模型分析(5)
  8. 2017蓝桥杯C++A:迷宫(DFS)
  9. 关于按钮背景透明 + div拖拽
  10. 【html5和css3】transition属性整理
  11. Python Pytest自动化测试 获取测试用例执行结果
  12. Large-scale Video Classification with Convolutional Neural Networks
  13. X86服务器CPU的作用,为什么需要基于x86架构的至强处理器?
  14. html mui模板使用,mui + vue 模板
  15. Linux无界面创建Oracle数据库实例
  16. IDEA/GoLand 添加自定义特殊注释【注释高亮】
  17. Suse12离线安装docker
  18. 搜索与图论模板题(必备)Day3
  19. 大数据早报:三星Kakao联手开发AI语音识别技术 百度视频8月大数据报告出炉(9.19)
  20. 晨控CK-GW208-EC与欧姆龙PLC工业EtherCAT协议通讯指南

热门文章

  1. SRC-script:挖掘src常用脚本收集
  2. NetAssist网络调试工具使用指南 (附NetAssist工具包)
  3. CnOpenData中国各省份专利授权数量统计
  4. 2022北京视力防控展/北京青少年眼健康展会/中国眼博会
  5. MVS海康相机参数设置完整版
  6. Go go.mod详解
  7. Android pms权限管理,PMS权限管理和鉴权过程
  8. 武汉大学计算机学院跳楼,网传武汉大学博士后跳楼身亡,疑似科研压力太大
  9. 与你分享五句话(转贴)
  10. [Linux网络编程]Socket套接字