package
import android.util.Log;
import java.io.IOException;
import java.nio.charset.Charset;
import okhttp3.Interceptor;
import okhttp3.Request;
import okhttp3.Response;
import okhttp3.ResponseBody;
import okio.Buffer;
import okio.BufferedSource;
/**
* @author liushengwei 请求拦截器
* @description: https://github.com/lsw8569013
* @date :2020-02-14 14:03
*/
public class CommonRequestInterceptor implements Interceptor {
private INetWorkInfo netWorkInfo;
public CommonRequestInterceptor(INetWorkInfo netWorkInfo) {
this.netWorkInfo = netWorkInfo;
}
@Override
public Response intercept(Chain chain) throws IOException {
Request.Builder builder = chain.request().newBuilder();
// 可以添加公共的请求投 token Access_Token
String token = netWorkInfo.getToken();
Request request = null;
if (token != null) {
request = builder.addHeader("Access_Token", token)
.build();
}else{
request = builder .build();
}
//打印返回信息
Response response = chain.proceed(request);
if (BuildConfig.DEBUG) {
Log.e("lsw", "response返回参数" + response.toString());
}
ResponseBody responseBody = response.body();
long contentLength = responseBody.contentLength();
BufferedSource source = responseBody.source();
source.request(Integer.MAX_VALUE); // Buffer the entire body.
Buffer buffer = source.buffer();
String backSource = buffer.clone().readString(Charset.forName("UTF-8"));
if(BuildConfig.DEBUG){
if (contentLength != 0) {
Log.e("lsw", "服务器返回数据 =:" + backSource);
}
}
BaseBeanCheck bean = new Gson().fromJson(backSource, BaseBeanCheck.class);
if(bean.getData() instanceof String){
bean.setData(null);
String replace = new Gson().toJson(bean);
if(BuildConfig.DEBUG){
Log.e("lsw", "服务器修改后 返回数据 =:" + replace);
}
Response build = response.newBuilder().body(ResponseBody.create(responseBody.contentType(), replace)).build();
return build;
}
return response;
}
}
2.过滤Python 返回值false 为null
/**
* @author liushengwei 请求拦截器
* @description: https://github.com/lsw8569013
* @date :2020-02-14 14:03
*/
public class CommonRequestInterceptor implements Interceptor {
private INetWorkInfo netWorkInfo;
public CommonRequestInterceptor(INetWorkInfo netWorkInfo) {
this.netWorkInfo = netWorkInfo;
}
@Override
public Response intercept(Chain chain) throws IOException {
Request.Builder builder = chain.request().newBuilder();
// 可以添加公共的请求投 token Access_Token
String token = netWorkInfo.getToken();
Request request = null;
if (token != null) {
request = builder.addHeader("Cookie", token)
.build();
LogUtil.e("cookie == " + token);
} else {
request = builder.build();
}
//打印返回信息
Response response = chain.proceed(request);
if (BuildConfig.DEBUG) {
LogUtil.e("response返回参数" + response.toString());
}
if (token == null) {
Map<String, List<String>> stringListMap = response.headers().toMultimap();
StringBuilder sb = new StringBuilder();
List<String> strings = stringListMap.get("Set-Cookie");
for (String string : strings) {
// sb.append(string.replace("path=/; HttpOnly",""));
string = string.substring(0, string.indexOf(";"));
LogUtil.e( "=== cookie == " + string);
netWorkInfo.setToken(string);
}
}
ResponseBody responseBody = response.body();
long contentLength = responseBody.contentLength();
BufferedSource source = responseBody.source();
source.request(Integer.MAX_VALUE); // Buffer the entire body.
Buffer buffer = source.buffer();
String backSource = buffer.clone().readString(Charset.forName("UTF-8"));
if (BuildConfig.DEBUG) {
if (contentLength != 0) {
Log.e("OK", "服务器返回原数据 =:" + backSource);
}
}
String replace = backSource.replaceAll("false", "null");
response = response.newBuilder().body(ResponseBody.create(responseBody.contentType(), replace)).build();
if (BuildConfig.DEBUG) {
Log.e("lsw", "服务器data 修改后 =:" + replace);
}
return response;
}
}