本文主要是介绍jmeter 中 http请求采样器中Client implementation HttpClient4和java区别实践一,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
好吧,最近还是在折腾Jmeter,在一个post请求中,发现啃爹的竟然带有特殊字符:'
怎么办,直接将数据写入,如下:
然后在实际用post发请求时,jmeter自动给转义了,如下:
xxxx=%27qq%27%3A%2720%27&rrr=%7Bqq%27
怎么办???那就加加转义字符试试,与是,加了"\",“\\”,“\\\”,“\\\\”都没用
只能换方法了
这时,几年前写的jmter请求客户端发送机制回到脑海,又重读了一遍
我们将Implementation换成Java的方式来试一试
结果终于发现,符号' 没有转义,正常发出
-
POST data:
-
xxxx='qq':'20'&rrr={'qq':'233'}
原来,默认的HTTPClinet在POST时会自动将特殊字符转义,然而Java在发送过程中却未处理。
=====================================================================================
=====================================================================================
其他解决方法
2.若想不设implementation值,则需进行c参数d参数URLEncoding
1 import java.io.UnsupportedEncodingException;2 import java.net.URLEncoder;3 public static String UrlEncode(String result) throws UnsupportedEncodingException{4 StringBuffer urle = new StringBuffer();5 String[] results = result.split("&");6 int i = 0;7 for(String tempStr : results)8 {9 int start = tempStr.indexOf("{"); 10 int end = tempStr.lastIndexOf("}")+1; 11 //要urlencode的字符串组合 12 String str = tempStr.substring(start, end); 13 String key = tempStr.replace(str, ""); 14 //urlencode的消息体 15 String data = URLEncoder.encode(str, "UTF-8"); 16 if(i > 0) 17 { 18 urle.append("&"); 19 } 20 urle.append(key); 21 urle.append(data); 22 i++; 23 } 24 return urle.toString(); 25 } 26 String req = UrlEncode(Parameters); 27 log.info(req); 28 vars.put("req",req);
方法二(优化):
这篇关于jmeter 中 http请求采样器中Client implementation HttpClient4和java区别实践一的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!