Retrofit2自定义拦截器和ConverterFactory实现客户端与服务端加密通信

网络请求框架使用的retrofit,客户端与服务端之间需要加密通信并且请求需要gzip压缩。为完成这一需求,需要拦截请求和响应。特此记录下修改请求的过程,希望可以帮助有需要的人。

处理request

retrofit2使用okhttp3.x,请求上的处理只需要给okhttp添加拦截器即可
这里与服务端通信相互之间对称加密,并且需要开启gzip压缩,因此这里定义了三个拦截器完成这一需求

1.修改请求头

 public class RequestHeaderInterceptor implements Interceptor {
     @Override
     public Response intercept(Chain chain) throws IOException {
         Request originalRequest = chain.request();
         Request updateRequest = originalRequest.newBuilder()
                 .header("Content-Type", "text/plain; charset=utf-8")
                 .header("Accept", "*/*")
                 .header("Accept-Encoding", "gzip")
                 .build();
         return chain.proceed(updateRequest);
     }
 }

2.加密请求内容

 public class RequestEncryptInterceptor implements Interceptor {
     @Override
     public Response intercept(Chain chain) throws IOException {
         Request request = chain.request();
         RequestBody body = request.body();
         Buffer buffer = new Buffer();
         body.writeTo(buffer);
         Charset charset = Charset.forName("UTF-8");
         MediaType contentType = body.contentType();
         if (contentType != null) {
             charset = contentType.charset(charset);
         }
         String paramsStr = buffer.readString(charset);
         try {
             paramsStr = EncryptUtils.encryptParams(paramsStr);
         } catch (Exception e) {
             LogUtils.e(e);
         }
         RequestBody requestBody = RequestBody.create(
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值