Jmeter-響應結果unicode轉成中文顯示

本文爲轉載微信公衆號文章,如做者發現後不肯意,請聯繫我進行刪除 html

原文連接:http://mp.weixin.qq.com/s?__biz=MjM5OTI2MTQ3OA==&mid=2652178311&idx=1&sn=9ac05bc08e688018b9df1681d17fdc43&chksm=bcdf83ce8ba80ad8177307c44f74d4acc5d5e247af69894986b2d3c72e1847cebee6117c4d4e&scene=0#rdjava

 

在jmeter工具的使用中,無論是測試接口仍是調試性能時,查看結果樹必不可少,然而在查看響應數據時,其中的中文常常以Unicode的編碼形式顯示,如圖1。這樣不能直接查看到對應的中文是否爲指望的結果,很不方便。apache

 

 

         我找到一個曲線救國的方法,供你們參考。獲得結果,如圖2。api

 

 

操做步驟

第一步

在對應請求上添加後置處理器BeanShellPostProcessor,如圖3.微信


 

獲得頁面,圖4。微信開發

                                            

圖4app

第二步

在後置處理器BeanShellPostProcessor的script中貼入Unicode的轉中文的編碼,如圖5。工具

 

 

代碼以下:性能

//獲取響應代碼Unicode編碼的測試

String s2=newString(prev.getResponseData(),"UTF-8");

//---------------一下步驟爲轉碼過程---------------

charaChar;

intlen= s2.length();

StringBufferoutBuffer=newStringBuffer(len);

for(int x =0; x <len;){

aChar= s2.charAt(x++);

if(aChar=='\\'){

aChar= s2.charAt(x++);

if(aChar=='u'){

int value =0;

for(inti=0;i<4;i++){

aChar= s2.charAt(x++);

switch(aChar){

case'0':

case'1':

case'2':

case'3':

case'4':

case'5':

case'6':

case'7':

case'8':

case'9':

value=(value <<4)+aChar-'0';

break;

case'a':

case'b':

case'c':

case'd':

case'e':

case'f':

value=(value <<4)+10+aChar-'a';

break;

case'A':

case'B':

case'C':

case'D':

case'E':

case'F':

value=(value <<4)+10+aChar-'A';

break;

default:

thrownewIllegalArgumentException(

"Malformed   \\uxxxx  encoding.");}}

outBuffer.append((char) value);}else{

if(aChar=='t')

aChar='\t';

elseif(aChar=='r')

aChar='\r';

elseif(aChar=='n')

aChar='\n';

elseif(aChar=='f')

aChar='\f';

outBuffer.append(aChar);}}else

outBuffer.append(aChar);}

//-----------------以上內容爲轉碼過程---------------------------

//將轉成中文的響應結果在查看結果樹中顯示

prev.setResponseData(outBuffer.toString());

 

第三步

正常調試並查看結果樹,發現以前的Unicode的編碼的中文,已經轉碼完畢。

<End>

 

原理

         經過BeanShell內置變量prev,得到響應數據,通過java程序編碼,把Unicode代碼轉成中文,最後修改查看結果樹中響應數據爲轉換完畢的中文數據。

備註

一、  在性能測試前,請把這個後置處理器刪除,否則會大量消耗本機的內存和CPU,影響性能的結果

二、  以上代碼中的轉碼過程能夠更改成更適合的代碼,但要注意的是Jmeter3.0這個版本依舊對Integer.parseint()方法不能很好支持,運行會報錯。

三、  關於獲取響應結果的變量值prev,具體API查看:

http://jmeter.apache.org/api/org/apache/jmeter/samplers/SampleResult.html

相關文章
相關標籤/搜索