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


本文為轉載微信公眾號文章,如作者發現后不願意,請聯系我進行刪除 

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

 

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

 

 

         我找到一個曲線救國的方法,供大家參考。得到結果,如圖2。

 

 

操作步驟

第一步

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


 

得到頁面,圖4。

                                            

圖4

第二步

在后置處理器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代碼轉成中文,最后修改查看結果樹中響應數據為轉換完畢的中文數據。

備注

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

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

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

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

 


免責聲明!

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



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