我需要以以下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"}
这里的键和值是我为了便于理解而放置在此处的虚拟数据。
请使用此网址的正确语法帮助我。 预先感谢您的所有帮助。
答案 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中定义请求:
请注意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概念的更多信息。