日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

retrofit2.adapter.rxjava2.HttpException: HTTP 403 Forbidden

發布時間:2023/12/20 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。