双11狂欢大促

盲盒赢 定制羽绒服

开启惊喜盲盒,抽取你的专属好礼

— 惊喜奖品抢先看 —

Retrofit + OkHttp3做请求,在拦截器对body进行加密,抓包后发现加密后的body只发送了一半

CsdnNum CsdnNum 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
是不是哪里出问题了?以下是拦截器的内容,我要在请求发出时对body进行加密,然后发现加密后只发出去一半?怎么回事?

Request request = chain.request();
//字符集
Charset charset = Charset.forName("UTF-8");

//不是Get和Delete请求时,则请求数据在请求体中
RequestBody requestBody = request.body();
//判断类型
MediaType contentType = requestBody.contentType();
if (contentType != null) {
charset = contentType.charset(charset);
/*如果是二进制上传 则不进行加密*/
if (contentType.type().toLowerCase().equals("multipart")) {
return chain.proceed(request);
}
}


// 获取请求的数据
Buffer buffer = new Buffer();
requestBody.writeTo(buffer);
String requestData = URLDecoder.decode(buffer.readString(charset).trim(), "utf-8");

//这里调用加密的方法,自行修改
byte[] bytes = new byte[0];
try {
bytes = RSAUtils.encryptData(requestData.getBytes(), RSAUtils.loadPublicKey(config.getPublicKey()));
} catch (Exception e) {
e.printStackTrace();
}
String encryptData = URLEncoder.encode(new String(bytes));
//构建新的请求体
RequestBody newRequestBody = RequestBody.create(contentType, encryptData);
//构建新的requestBuilder
Request.Builder newRequestBuilder = request.newBuilder();
//根据请求方式构建相应的请求
newRequestBuilder.post(newRequestBody);

request = newRequestBuilder.build();
return chain.proceed(request);
});

...全文

相关推荐

评论 3
收藏 已收藏
分享
返回顶部
CsdnNum
Java 51,407 成员 86,133 内容