您的位置:首页 > 理论基础 > 计算机网络

Okhttp+Retrofit下访问百度音乐api出现403 forbidden的解决方案

2017-11-20 18:21 726 查看
今天在写一个音乐播放器的时候使用到了百度音乐api查歌词,使用Okhttp+Retrofit,出现了403 forbidden 的情况

查资料得知,okhttp不是原生的http请求,它在header里面并没有真正的User-Agent,而是“okhttp/版本号”这样的字符串,为okhttp设置User-Agent可以解决问题。

OkHttpClient.Builder builder = new OkHttpClient().newBuilder() ;
builder.addInterceptor(new Interceptor() {

4000
@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();


运行结果:
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息