jmeter http 请求解码 HTTPSampler.path 中的 %2F,我想保留它

jmeter http 请求解码 HTTPSampler.path 中的 %2F,我想保留它

我是 jmeter 新手。我使用的 Jmeter 版本是 5.1.1

我想用它来测试我的 restful api 服务。
我的 api 类似于:DELETE /cpro/v2/alertfiles/{filename}
此处的文件名为 /etc/config/testfile1。

如果 curl 命令如下,服务器就可以解析文件名:
curl -v -X DELETEhttp://restapisrv:8888/cpro/v2/alertfiles/%2Fetc%2Fconfig%2Ftestfile1?configmapName=zt3-cpro-server

我创建了一个 http 请求。但是 jmeter 发送的 url 已将 %2F 解码为 '/'。因此请求看起来像 DELETE /cpro/v2/alertfiles/etc/config/testfile1,这导致服务器返回 404,因为找不到这样的条目。 <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="delete alert file test1" enabled="true"> <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true"> <collectionProp name="Arguments.arguments"/> </elementProp> <stringProp name="HTTPSampler.domain">restapisrv</stringProp> <stringProp name="HTTPSampler.port">8888</stringProp> <stringProp name="HTTPSampler.protocol">http</stringProp> <stringProp name="HTTPSampler.contentEncoding">utf-8</stringProp> <stringProp name="HTTPSampler.path">/cpro/v2/alertfiles/%2Fetc%2Fconfig%2Ftestfile1?configmapName=zt3-cpro-server&amp;namespace=default</stringProp> <stringProp name="HTTPSampler.method">DELETE</stringProp> <boolProp name="HTTPSampler.follow_redirects">true</boolProp> <boolProp name="HTTPSampler.auto_redirects">false</boolProp> <boolProp name="HTTPSampler.use_keepalive">true</boolProp> <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp> <stringProp name="HTTPSampler.embedded_url_re"></stringProp> <stringProp name="HTTPSampler.connect_timeout"></stringProp> <stringProp name="HTTPSampler.response_timeout"></stringProp> </HTTPSamplerProxy>

我尝试在路径中使用__urlencode(/etc/config/testfile1),但结果相同。我不知道如何设置HTTPSmapler.path的值以保留%2F。对此有什么想法吗?谢谢您的帮助。

答案1

我使用插件 http raw request 来解决这个问题。这是一个变通方法。配置如下:

 <kg.apc.jmeter.samplers.HTTPRawSampler guiclass="kg.apc.jmeter.samplers.HTTPRawSamplerGui" testclass="kg.apc.jmeter.samplers.HTTPRawSampler" testname="delete alert file test2 - HTTP Raw Request" enabled="true">
          <stringProp name="hostname">zt1-cpro-restapisrv-restserver</stringProp>
          <stringProp name="port">8888</stringProp>
          <boolProp name="keepalive">false</boolProp>
          <stringProp name="timeout">0</stringProp>
          <stringProp name="data">DELETE /cpro/v2/alertfiles/%2Fetc%2Fconfig%2Ftestfile2?configmapName=zt3-cpro-server&amp;namespace=default   HTTP/1.1&#xd;
User-Agent: curl/7.29.0&#xd;
Host: zt1-cpro-restapisrv-restserver:8888&#xd;
Accept: */*&#xd;
Connection: close&#xd;
&#xd;
</stringProp>
          <stringProp name="fileName"></stringProp>
          <boolProp name="parse">true</boolProp>
        </kg.apc.jmeter.samplers.HTTPRawSampler>

jmeter图形用户界面

相关内容