步骤
将proto文件转换为二进制文件
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16private static AiQiYV215Rta.RTARequest_2_0 request_2_0;
static {
request_2_0 = AiQiYV215Rta.RTARequest_2_0.newBuilder()
.setOaid("7b6798e89994056e89c1797e6a52700c")
.setImeiMd5("868619039737877")
.setOpenUdid("ba9680df551f6de824d5aa2e61d97e5b")
.setIdfaMd5("868619039737878")
.setPlatform(32)
.addAdvertiserIds(1245125L)
.build();
}
public static void main(String[] args) {
FileUtil.writeBytes(request_2_0.toByteArray(), "D:\\test\\rta\\AiQiYV215Rta.pb");
}在jmeter中创建http请求
使用文件上传,上传刚生成的二进制文件
添加HTTP Header Manager,配置请求头:application/x-protobuf
添加View Results Tree执行,则可以看到响应数据
问题
响应结果乱码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25"/aiqiyi/rta", name = "爱奇艺曝光", consumes = "application/x-protobuf") (value =
public void aiQiYiTo(HttpServletRequest request, HttpServletResponse response) {
String logBy = this.getClass().getName() + ".aiQiYiTo:{}";
try (InputStream input = request.getInputStream(); OutputStream out = response.getOutputStream()) {
AiQiYV215Rta.RTARequest_2_0 aiqiyRequest = AiQiYV215Rta.RTARequest_2_0.parseFrom(input);
AiQiYV215Rta.RTAResponse_2_0.Builder aiqiyResponse = AiQiYV215Rta.RTAResponse_2_0.newBuilder();
List<Long> list = aiqiyRequest.getAdvertiserIdsList();
for (Long l : list) {
AiQiYV215Rta.ResultList_2_0 resultList = AiQiYV215Rta.ResultList_2_0.newBuilder()
.setAdvertiserId(l)
.setIsDeliver(true)
.build();
aiqiyResponse.addResult(resultList);
}
log.info(logBy, aiqiyResponse.toString());
// 此处先toString再getBytes并设置编码,不然响应结果会乱码
out.write(aiqiyResponse.toString().getBytes(StandardCharsets.UTF_8));
out.flush();
} catch (Exception exception) {
log.error(logBy, exception);
}
}