美文网首页拦截器
使用okHttp3拦截器统一加密解密(1)

使用okHttp3拦截器统一加密解密(1)

作者: galaxy_zheng | 来源:发表于2019-10-08 09:06 被阅读0次

layout: post

title: '如何使用okHttp拦截器统一解密(1)'

subtitle: '转载请注明出处'

date: 2019-08-30

categories: Android okHttp3

cover: 'http://bpic.588ku.com/back_pic/05/56/83/235b206f30d6d48.jpg'

tags: Android okHttp3


自定义拦截器可以先客户端一步拿到每一次 Http 请求的结果做一些额外处理

example:解密、token过期后重新请求等

public class ResponseInterceptor implements Interceptor {
    private static final String TAG = "ResponseInterceptor";

    @Override
    public Response intercept(Chain chain) throws IOException {
        //返回request
        Request request = chain.request();
        //返回response
        Response response = chain.proceed(request);
        //isSuccessful () ; 如果代码在[200..300]中,则返回true,这意味着请求已成功接收、理解和接受。
        if (response.isSuccessful()) {
            //返回ResponseBody
            ResponseBody responseBody = response.body();
            if (responseBody != null) {
                try {
                    //获取bodyString
                    BufferedSource source = responseBody.source();
                    source.request(Long.MAX_VALUE);
                    Buffer buffer = source.buffer();
                    Charset charset = Charset.forName("UTF-8");
                    MediaType contentType = responseBody.contentType();
                    if (contentType != null) {
                        charset = contentType.charset(charset);
                    }
                    String bodyString = buffer.clone().readString(charset);
                    //我这里是base64解码  具体情况自己定义
                    //base64解码
                    String responseData = new String(EncodeUtils.base64Decode(bodyString));
                    //生成新的ResponseBody
                    ResponseBody newResponseBody = ResponseBody.create(contentType, responseData.trim());
                    //response
                    response = response.newBuilder().body(newResponseBody).build();
                     Log.i(TAG, "解密后数据: " + responseData);

                } catch (IOException e) {
                    //如果发生异常直接返回
                    e.printStackTrace();
                    return response;
                }
            } else {
                Log.i(TAG, "onHttpResultResponse: 响应体为空");
            }
        }
        return response;
    }

}

相关文章

  • 使用okHttp3拦截器统一加密(2)

    layout: post title: '使用okHttp3拦截器统一加密(2)' subtitle: '转载请注...

  • 使用okHttp3拦截器统一加密解密(1)

    layout: post title: '如何使用okHttp拦截器统一解密(1)' subtitle: '转载请...

  • 小程序和后台出参入参加密解密实现(二)

    整理后的后端加密解密及使用方法如下 1、加密算法 2、使用方法 3、后端框架都是有拦截器的,因为我们要在入参时解密...

  • python加密解密

    1. md5加密 方法一:使用Crypto 方法二:使用hashlib 2. AES加密解密 导入库 加密 解密

  • 对称加密

    对称加密的特点1)加密/解密使用相同的密钥2)加密和解密的过程是可逆的(明文->密文->明文)对称加密和解密 缺点...

  • openssl终端命令RSA和DES加解密

    RSA 1、生成公钥和私钥 2、加密解密文件 公钥加密私钥解密 私钥加密公钥解密 3、在程序中使用依次生成 csr...

  • 一:密码学

    1.密码加密:(目的:加密容易,解密难) 对称加密:使用一个key加密和解密,key 非常重要,如果一旦泄露,后果...

  • https加密算法

    1,对称加密算法,是指加密和解密使用相同的密钥 2,非对称加密算法:又称为公钥加密算法,是指加密和解密使用不同的密...

  • iOS开发证书相关总结

    加密、解密 对称加密、非对称加密 对称加密:加密、解密使用相同的密钥;DES、AES(Mac、Windows的磁盘...

  • https简单介绍

    # 对称加密 加密解密使用同一个密钥,速度较快,如aes # 非对称加密 公钥加密,私钥解密,私钥加密,公钥解密,...

网友评论

    本文标题:使用okHttp3拦截器统一加密解密(1)

    本文链接:https://www.haomeiwen.com/subject/synnectx.html