jmeter中HttpClient4请求失败
上传文件时:Httpclient4: 请求体
请求头
响应结果 ,后端服务都总是提示存在非法标签。
jmeter中使用java请求成功
修改使用java方式,访问正常; 根据分析可能因为HC4对一些特殊字符会进行转义,转义后后台解析可能出现错; 使用java方法就不会有此问题
;
请求体:
响应结果,请求成功:
Java和Httpclient区别
如上图:jmeter客户端实现方式有三种,一种是java,一种是httpclient4, 还有一种默认,我们来看一下java与httpclient4的区别:
Java:选择压测时,链接是复用的(代码中的http调用都加了连接池)
httpclient4:压测时,每请求一次都创建一个新的链接,(jmeter5.0以前默认关闭了连接复用,5.0上是打开的:即每请求一次都会创建一个新的链接)
从JMeter 5.0开始,当使用默认的HC4实现时,JMeter将在每个线程组迭代时重置HTTP状态(SSL状态+连接)。如果您不想要此行为,请设置httpclient.reset_state_on_thread_group_iteration = false
所以httpclient4 在连接复用设置打开的情况下,压测结果与java的是不一样的,因为java复用链接,httpclient4每次连接都会重新建立tcp连接,如果httpclient4吞吐量过低,需要考虑网络带宽的限制
java实现适合压榨性测试,httpclient4适合真实场景的模拟
备注: 默认的HTTPClinet在POST时会自动将特殊字符转义,然而Java在发送过程中却未处理。