原文摘自:廖丹 http://www.cnblogs.com/android-it/p/8805659.html
在使用JMeter做接口测试时,发现相同url,用postman工具,其返回数据参数为中文,而用JMeter工具,其返回参数为Unicode,如下图所示
解决方法如下:
1.Jmeter在对应的请求上右键添加后置处理器BeanShell PostProcessor
2.在BeanShell PostProcessor输入对应的转码代码
3.对应的编码如下所示,可直接复制粘贴
String s2=new String(prev.getResponseData(),"UTF-8"); //---------------一下步骤为转码过程--------------- char aChar; int len= s2.length(); StringBuffer outBuffer=new StringBuffer(len); for(int x =0; x <len;){ aChar= s2.charAt(x++); if(aChar==\'\\\'){ aChar= s2.charAt(x++); if(aChar==\'u\'){ int value =0; for(int i=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: throw new IllegalArgumentException( "Malformed \\uxxxx encoding.");}} outBuffer.append((char) value);}else{ if(aChar==\'t\') aChar=\'\t\'; else if(aChar==\'r\') aChar=\'\r\'; else if(aChar==\'n\') aChar=\'\n\'; else if(aChar==\'f\') aChar=\'\f\'; outBuffer.append(aChar);}}else outBuffer.append(aChar);} //-----------------以上内容为转码过程--------------------------- //将转成中文的响应结果在查看结果树中显示 prev.setResponseData(outBuffer.toString());
4.再次运行JMeter,发现其查看结果树的响应数据为中文