Android http 403 错误 可能出现的原因
生活随笔
收集整理的這篇文章主要介紹了
Android http 403 错误 可能出现的原因
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
今天自己寫代碼使用Retrofit下載百度搜索出來的圖片的時候,發(fā)現(xiàn)了報錯了,403。然后使用Glide卻可以加載圖片。
然后對Glide進(jìn)行抓包,發(fā)現(xiàn)Glide請求的時候 http header 是這種格式的:
User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.81 Safari/537.36
而我自己的 請求默認(rèn)是
User-Agent: okhttp/3.10.0
估計是百度對User-Agent有要求,所以我自己添加了一個正常的User-Agent請求頭就ok了。
public class UserAgentInterceptor implements Interceptor {@Overridepublic Response intercept(Chain chain) throws IOException {Request request = chain.request().newBuilder().removeHeader("User-Agent")//移除舊的.addHeader("User-Agent", WebSettings.getDefaultUserAgent(MyApplication.getInstance()))//添加真正的頭部,可以寫死,也可以動態(tài)獲取.build();return chain.proceed(request);} } HttpLoggingInterceptor interceptor = new HttpLoggingInterceptor();interceptor.setLevel(HttpLoggingInterceptor.Level.BODY);if (mOkHttpClient == null) {synchronized (RetrofitClient.class) {if (mOkHttpClient == null) {//設(shè)置Http緩存//Cache cache = new Cache(new File(BilibiliApp.getInstance().getCacheDir(), "HttpCache"), 1024 * 1024 * 10);mOkHttpClient = new OkHttpClient.Builder()//.cache(cache).addInterceptor(interceptor).addInterceptor(new UserAgentInterceptor())//.addNetworkInterceptor(new CacheInterceptor())//.addNetworkInterceptor(new StethoInterceptor()).retryOnConnectionFailure(true).connectTimeout(DEFAULT_TIMEOUT, TimeUnit.SECONDS).writeTimeout(DEFAULT_TIMEOUT, TimeUnit.SECONDS).readTimeout(DEFAULT_TIMEOUT, TimeUnit.SECONDS).cookieJar(new CookieManger(context))//.addInterceptor(new UserAgentInterceptor()).build();}}}?
總結(jié)
以上是生活随笔為你收集整理的Android http 403 错误 可能出现的原因的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 红外测温仪人体测温解决方案
- 下一篇: ehviewer_ehviewer1.7