我刚开始使用jmeter。 我的应用程序返回一个带有加密值的URL作为响应,必须作为请求传递以获取下一页。加密值始终以“=”结尾。 “http://mycompany.com/enc=EncRypTedValue=”。在将值作为请求传递时,“=”将替换为其他字符,例如'%3d'ex“http://mycompany.com/enc=EncRypTedValue%3d”。由于令牌已被更改,我的应用程序未提供请求。
答案 0 :(得分:2)
您的应用程序有问题,因为这是应该发送的方式。 Url参数应按照rfc3986中的规定进行编码。浏览器甚至可以自动执行,因此如果它不起作用,应该在您的Web应用程序上修复。
如果URI组件的数据与保留字符冲突 作为分隔符的目的,那么冲突的数据必须是 在URI形成之前进行百分比编码。
reserved = gen-delims / sub-delims
gen-delims = ":" / "/" / "?" / "#" / "[" / "]" / "@"
sub-delims = "!" / "$" / "&" / "'" / "(" / ")"
/ "*" / "+" / "," / ";" / "="
答案 1 :(得分:2)
我花了一些时间来理解这一点,这与网络标准中的其他语言和环境不同,URI(URL)不使用引号或某些转义符来隐藏特殊字符。
相反,需要通过分别编码每个参数来正确编码URL,以构建完整的URL。在JavaScript中,参数的编码/解码分别是通过encodeURIComponent()和encodeURIComponent()完成的。
例如,以下内容:
http://example.com/?p1=hello=hi&p2=three=3
应该在每个参数上使用encodeURIComponent()进行编码,以构建以下内容:
http://example.com/?p1=hello%3Dhi&p2=three%3D3
希望这对某人有帮助。
答案 2 :(得分:1)
您遇到的是网址编码 - =
是网址中的保留字符,您不能将其附加到未编码的网址。它needs to be encoded。这显然已经发生在你的情况下。在服务器端,需要再次解码url参数。不过,这通常是容器的工作。
答案 3 :(得分:0)
根据您的使用案例,您可以考虑采用以下方法之一:
您可以使用Regular Expression Extractor后处理器捕获响应并将其存储到JMeter变量。作为Java Unicode字符串的变量,您不应该对“=”符号的额外编码遇到任何问题。
JMeter提供__urldecode函数,您可以使用它来解码您的请求。
您可以使用__Beanshell函数或BeanShell预处理器预处理请求,以使用以下内容解码整个URL:
URLDecoder.decode(vars.get("your_URL_to be decoded"),"encoding");
答案 4 :(得分:0)
如果您要在后续请求中添加加密值作为请求参数,请确保“编码?”未经检查
答案 5 :(得分:-1)
为您的值使用引号。例如。 -Key = “值”