Rxjava + Retrofit 错误拦截
Retrofit
OkHttpClient client = new OkHttpClient.Builder()
.addInterceptor(new Interceptor() {
@Override
public Response intercept(Chain chain) throws IOException {
Request request = chain.request()
.newBuilder()
.addHeader("GxToken+", SharedPreferencesUtils.getParam(mContext, Constant.SP.GxToken, "").toString() + "+")
.addHeader("uid", SharedPreferencesUtils.getParam(mContext, Constant.SP.uid, "").toString())
.addHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8")
.addHeader("Accept-Encoding", "gzip, deflate")
.addHeader("Connection", "keep-alive")
.addHeader("Accept", "*/*")
.addHeader("Cookie", TextUtils.isEmpty(JSESSIONID) ? SharedPreferencesUtils.getParam(mContext, Constant.SP.JSESSIONID, "").toString() : "JSESSIONID=" + JSESSIONID)
.build();
Response response = chain.proceed(request);
if (response.code() != 200) {
return new Response.Builder()
.code(200)
.body(ResponseBody.create(response.body().contentType(), "服务器错误!"))
.request(request)
.protocol(Protocol.HTTP_1_0)
.build();
}
return response;
// Response response = chain.proceed(request);
// Test.log("网络请求",response.body().string());
// //8
// return response;0
}
})
.addInterceptor(interceptor)
.retryOnConnectionFailure(true)
.connectTimeout(10, TimeUnit.SECONDS)
.build();
拦截的实现
if (response.code() != 200) { //如果code不等200则重新返回Response
return new Response.Builder()
.code(200)
.body(ResponseBody.create(response.body().contentType(), "服务器错误!"))
.request(request)
.protocol(Protocol.HTTP_1_0)
.build();
}