Retrofit + OkHttp3做请求,在拦截器对body进行加密,抓包后发现加密后的body只发送了一半
是不是哪里出问题了?以下是拦截器的内容,我要在请求发出时对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);
});