windows版jmeter的body data如何用\n作为“换行”

  前段时间用jmeter进行某个web接口性能测试的时候遇到一个问题,body data中的换行的内容发送后,通过抓包发现总是发送"0D0A"即"\r\n"(wireshark—〉Hex Dump),因为接口中有一个参数需要测试并发多条数据,每个数据规定用"\n"分隔,所以一直没有找到好方法模拟,51testting问了也没人答,google了N久也没有好办法,今天有时间重新试了几次,终于找到方法了。
  我首先尝试的办法是不用body data,改用parameters,增加一条detail,然后把原来在body data的内容贴进去,大概如下

------------------------------c2549808e0df
Content-Disposition: form-data; name="em"

product=deepscan
uv=4
et=1
en=1
md5s=a1d7e3adcdb07ddb6f42386
a1d7e3adcdb07ddb6f42387
------------------------------c2549808e0df--

  运行测试之后发现原来数据中的换行都变成"\n"了,包括之前一直无法解决的md5s也是用"\n"来换行啦,因为这个接口要求除了md5s这个参数的换行要用"\n",其他地方的换行还是要用"\r\n",所以这样并不能解决问题,但是起码知道原来windows版jmeter也是可以发送"\n"作为换行的了,因为"\n"是个转义字符,所以便从转义方向考虑,只要能把"\n"转义后作为数据发送出去就可以了,google后发现jmeter有转义字符相关的函数:

      __char(将一串数字翻译成Unicode字符)
  __unescape(用于反转义Java-escaped字符串)
      __unescapeHtml(用于反转义一个包含HTML字符串,将其变为包含实际Unicode字符的字符串)
      __escapeHtml(用于转义HTML字符串中的字符)

  最终找到问题的解决办法,就是一句:

${__unescape(\n)}或${__char(0xA)}

  所以只要把body data中需要这样处理的内容修改一下就就可以了,即

Content-Disposition: form-data; name="em"

product=deepscan
uv=4
et=1
en=1
md5s=a1d7e3adcdb07ddb6f42386${__unescape(\n)}a1d7e3adcdb07ddb6f42387
------------------------------c2549808e0df--
posted @ 2015-12-29 18:23  肥狐  阅读(4126)  评论(0编辑  收藏  举报