Interceptor修改服务器返回的数据

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

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值