关于#压力测试#的问题:jmeter用http代理录制后,回放脚本发现有一个post请求报错

jmeter用http代理录制后,回放脚本发现有一个post请求报错。

java.net.URISyntaxException: Illegal character in query at index 357:涉及业务代码
    at java.net.URI$Parser.fail(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.(Unknown Source)
    at java.net.URL.toURI(Unknown Source)
    at org.apache.jmeter.protocol.http.sampler.HTTPHC4Impl.sample(HTTPHC4Impl.java:544)
    at org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy.sample(HTTPSamplerProxy.java:67)
    at org.apache.jmeter.protocol.http.sampler.HTTPSamplerBase.sample(HTTPSamplerBase.java:1231)
    at org.apache.jmeter.protocol.http.sampler.HTTPSamplerBase.sample(HTTPSamplerBase.java:1220)
    at org.apache.jmeter.threads.JMeterThread.doSampling(JMeterThread.java:622)
    at org.apache.jmeter.threads.JMeterThread.executeSamplePackage(JMeterThread.java:546)
    at org.apache.jmeter.threads.JMeterThread.processSampler(JMeterThread.java:486)
    at org.apache.jmeter.threads.JMeterThread.run(JMeterThread.java:253)
    at java.lang.Thread.run(Unknown Source)

“Devil组”引证GPT后的撰写:
看起来涉及到的业务代码包含了非法的字符,导致URI解析错误。这可能是由于在录制期间使用的代理服务器对业务代码进行了编码或转义,而在回放期间未能正确地处理这些字符所致。

  • 一种解决方法是,在回放脚本中手动编码或转义涉及到的业务代码。可以使用Java中的java.net.URLEncoder类或类似的工具来编码数据。例如,将业务代码作为参数传递给URLEncoder.encode()方法,然后将编码后的字符串用于请求。类似地,如果涉及到的业务代码包含特殊字符,如空格、单引号等,则需要进行适当的转义。
  • 另一种解决方法是检查录制期间使用的代理服务器的配置,确保它正确地处理和转义请求数据。如果代理服务器不正确地处理请求数据,则在录制期间就会导致类似的问题。
  • 最后,还可以尝试使用不同的代理服务器进行录制和回放,以查看是否可以解决此问题。