retrofit2.adapter.rxjava2.HttpException: HTTP 403 Forbidden
某些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相关推荐
- 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): =====编号=== ...
- android retrofit2.0 rxjava2,Android - 网络请求之 Retrofit2 + RxJava
老婆保佑,代码无BUG 目录 引用 与其他开源请求库对比 Retrofit注解 使用 GET请求 POST请求 Retrofit2 + RxJava 基础使用 优化 封装Retrofit2 + RxJ ...
- 鸿蒙开发之网络框架搭建,MVP+Retrofit2+okhttp3+Rxjava2+RxHarmony
抓住人生中的一分一秒,胜过虚度中的一月一年! 小做个动图开篇引题 鸿蒙背景 2020年9月10号,鸿蒙2.0(HarmonyOS 2.0)系统正式发布,鸿蒙2.0面向应用开发者发布Beta版本,在20 ...
- 解决github push错误403 Forbidden while accessing
业务场景 我原来在github上创建了一个repository,名称为github_test,我上传了一些文件.但是几年后,我想再次利用该repository,更新并上传文件. 我在一台虚拟机上面gi ...
- nginx 403 forbidden 二种原因
1,缺少index.html或者index.php文件 server { listen 80; server_name localhost; index index.php index ...
- [Hihocoder 1289] 403 Forbidden (微软2016校园招聘4月在线笔试)
传送门 #1289 : 403 Forbidden 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 Little Hi runs a web server. Someti ...
- img 标签 访问图片 返回403 forbidden问题
之前在项目里,本地调试的时候,图片src引用了第三方网站的图片资源,导致控制台出现了如下的报错: 403 forbidden,说明了这个网络资源这样获取是被拒绝的,那么通过简单的百度,找到了相关的解决 ...
- 解决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 ...
- 配置https后访问返回403 forbidden
今天在配置https的时候配置好,http能访问,https访问返回403 forbidden: 网上找了很多,改nginx.conf的user的 修改配置文件的 其实就是权限问题,是网站根目录的权限 ...
最新文章
- java诡异的String.split()方法
- JAVA构造器的实际使用
- Java初学者需掌握的4大核心基础知识
- Planar Homography (共面点成像) Epipolar Geometry(对极几何)
- 2021牛客NOIP提高组OI赛前模拟赛第一场T2——牛牛和数组操作(区间dp)
- springboot 订单重复提交_瞬间几千次的重复提交,我用Spring Boot+Redis扛住了
- Android应用程序线程消息循环模型分析(5)
- 2017蓝桥杯C++A:迷宫(DFS)
- 关于按钮背景透明 + div拖拽
- 【html5和css3】transition属性整理
- Python Pytest自动化测试 获取测试用例执行结果
- Large-scale Video Classification with Convolutional Neural Networks
- X86服务器CPU的作用,为什么需要基于x86架构的至强处理器?
- html mui模板使用,mui + vue 模板
- Linux无界面创建Oracle数据库实例
- IDEA/GoLand 添加自定义特殊注释【注释高亮】
- Suse12离线安装docker
- 搜索与图论模板题(必备)Day3
- 大数据早报:三星Kakao联手开发AI语音识别技术 百度视频8月大数据报告出炉(9.19)
- 晨控CK-GW208-EC与欧姆龙PLC工业EtherCAT协议通讯指南