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--


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM