在后续请求中传递“=”(相等)符号时遇到麻烦 - Jmeter

时间:2013-11-15 06:35:53

标签: jmeter url-encoding

我刚开始使用jmeter。 我的应用程序返回一个带有加密值的URL作为响应,必须作为请求传递以获取下一页。加密值始终以“=”结尾。 “http://mycompany.com/enc=EncRypTedValue=”。在将值作为请求传递时,“=”将替换为其他字符,例如'%3d'ex“http://mycompany.com/enc=EncRypTedValue%3d”。由于令牌已被更改,我的应用程序未提供请求。

6 个答案:

答案 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

  • 请注意,用于参数p1 = ... p2 =的等号保持不变。
  • 请勿尝试对整个URL进行编码/解码,否则将无法正常工作。 :)
  • 不要被浏览器地址栏/字段上显示的内容所迷住,这仅仅是人类友好的字符串,当您将其复制到剪贴板时,浏览器就会对其进行编码。

希望这对某人有帮助。

答案 2 :(得分:1)

您遇到的是网址编码 - =是网址中的保留字符,您不能将其附加到未编码的网址。它needs to be encoded。这显然已经发生在你的情况下。在服务器端,需要再次解码url参数。不过,这通常是容器的工作。

答案 3 :(得分:0)

根据您的使用案例,您可以考虑采用以下方法之一:

  1. 您可以使用Regular Expression Extractor后处理器捕获响应并将其存储到JMeter变量。作为Java Unicode字符串的变量,您不应该对“=”符号的额外编码遇到任何问题。

  2. JMeter提供__urldecode函数,您可以使用它来解码您的请求。

  3. 您可以使用__Beanshell函数或BeanShell预处理器预处理请求,以使用以下内容解码整个URL:

    URLDecoder.decode(vars.get("your_URL_to be decoded"),"encoding");
    

答案 4 :(得分:0)

如果您要在后续请求中添加加密值作为请求参数,请确保“编码?”未经检查

答案 5 :(得分:-1)

为您的值使用引号。例如。 -Key = “值”