Apache Jmeter HTTPRequest 没有响应?

Apache Jmeter HTTPRequest is not responding?

我遇到 Apache Jmeter 的 HTTPRequest 问题。

对于 URL 这样的人:

http://vast.bp3858435.btrll.com/vast/3858435?n=1421841861&br_w=[]

正常工作和响应。

但是当我向 URL 添加 % 符号时,它在 Jmeter 中没有响应并且 returns 以下内容:

java.net.URISyntaxException: Malformed escape pair at index 141: http://vast.bp3858435.btrll.com/vast/3858435?n=1421841861&br_w=[]%
at java.net.URI$Parser.fail(Unknown Source)
at java.net.URI$Parser.scanEscape(Unknown Source)
at java.net.URI$Parser.scan(Unknown Source)
at java.net.URI$Parser.checkChars(Unknown Source)
at java.net.URI$Parser.parseHierarchical(Unknown Source)
at java.net.URI$Parser.parse(Unknown Source)
at java.net.URI.<init>(Unknown Source)
at java.net.URL.toURI(Unknown Source)
at org.apache.jmeter.protocol.http.sampler.HTTPHC4Impl.sample(HTTPHC4Impl.java:252)
at org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy.sample(HTTPSamplerProxy.java:74)
at org.apache.jmeter.protocol.http.sampler.HTTPSamplerBase.sample(HTTPSamplerBase.java:1105)
at org.apache.jmeter.protocol.http.sampler.HTTPSamplerBase.sample(HTTPSamplerBase.java:1094)
at org.apache.jmeter.threads.JMeterThread.process_sampler(JMeterThread.java:429)
at org.apache.jmeter.threads.JMeterThread.run(JMeterThread.java:257)
at java.lang.Thread.run(Unknown Source)

为什么会这样?

发生这种情况是因为 % 本身是一个转义字符,它本身不是 URI 中的有效字符。某些字符对于任何 URI 都是无效的(包括 % 字符本身)并且必须使用 % 符号后跟两位十六进制数进行编码。

如果要将百分号 (%) 符号作为 URI 数据的一部分单独发送,则将其编码为 %25.

http://en.wikipedia.org/wiki/Percent-encoding

从 2.0 版开始,您可以使用 URLEncoder.encode() to encode a URI/URL. JMeter also has its own encode function (__urlencode())