Okhttp+Retrofit下訪問百度音樂api出現403 forbidden的解決方案
阿新 • • 發佈:2019-02-05
今天在寫一個音樂播放器的時候使用到了百度音樂api查歌詞,使用Okhttp+Retrofit,出現了403 forbidden 的情況
查資料得知,okhttp不是原生的http請求,它在header裡面並沒有真正的User-Agent,而是“okhttp/版本號”這樣的字串,為okhttp設定User-Agent可以解決問題。
OkHttpClient.Builder builder = new OkHttpClient().newBuilder() ; builder.addInterceptor(new Interceptor() { @Override public Response intercept(Chain chain) throws IOException { Request newRequest = chain.request().newBuilder() .removeHeader("User-Agent") .addHeader("User-Agent","Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:0.9.4)") .build() ; return chain.proceed(newRequest); } }) ; OkHttpClient client = builder.build() ; Retrofit retrofit = new Retrofit.Builder() .baseUrl(baseUrl) .addConverterFactory(FastJsonConverterFactory.create()) .addCallAdapterFactory(RxJavaCallAdapterFactory.create()) .client(client) .build();
執行結果: