Interceptor修改服务器返回的数据

    技术2023-12-19  89

    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; } }

     

    Processed: 0.145, SQL: 10