如何在Jmeter http请求中获取具有“ ... /?where = {'key1':'value1','key2':'value2':.........}“的URL

时间:2019-08-16 05:27:44

标签: jmeter

我需要以以下URL格式加载测试一个Python api

//IP:PORT/Sub_Part/?where={"KEY1":"VALUE1","KEY2":"VALUE2","KEY3":"VALUE3"}

我试图通过csv以及直接在http请求中传递键值对,但收到错误消息。

java.net.URISyntaxException: Illegal character in query at index 47:
http://IP:PORT/Sub_Part/?where={"KEY1":"VALUE1","KEY2":"VALUE2","KEY3":"VALUE3"}

这里的键和值是我为了便于理解而放置在此处的虚拟数据。

请使用此网址的正确语法帮助我。 预先感谢您的所有帮助。

2 个答案:

答案 0 :(得分:0)

在REST API中,JSON对象通常在请求的正文中发送(POST)或返回。它们通常不编码为URL的一部分。

对于GET请求,您可以将信息作为url中的段或作为querystring参数传递。

有关更多详细信息,请参见How to send a GET request with a "/" in the query

答案 1 :(得分:0)

根据HTML URL Encoding Reference

  

只能使用ASCII character-set通过Internet发送URL。

因此您需要按以下方式在JMeter的HTTP Request sampler中定义请求:

enter image description here

请注意URL Encode?复选框,必须选中该复选框,否则参数将“按原样”发送

另一个选择是使用__urlencode()函数,例如:

http://IP:PORT/Sub_Part/?where=${__urlencode({"KEY1":"VALUE1"\,"KEY2":"VALUE2"\,"KEY3":"VALUE3"})}

这将生成一个编码序列,您可以在URL路径中使用该序列:

%7B%22KEY1%22%3A%22VALUE1%22%2C%22KEY2%22%3A%22VALUE2%22%2C%22KEY3%22%3A%22VALUE3%22%7D
如您所见,

除去了所有非ASCII字符。

查看Apache JMeter Functions - An Introduction,以了解有关JMeter Functions概念的更多信息。