1. 程式人生 > >Okhttp+Retrofit下訪問百度音樂api出現403 forbidden的解決方案

Okhttp+Retrofit下訪問百度音樂api出現403 forbidden的解決方案

今天在寫一個音樂播放器的時候使用到了百度音樂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();

執行結果: