【问题标题】:JMeter: How to send parameters with PATCH method?JMeter:如何使用 PATCH 方法发送参数?
【发布时间】:2015-09-01 02:18:03
【问题描述】:

我的 JMeter 版本是最新的 2.13 版本。我想添加一个 HTTP 请求来测试我的 API,方法是 PATCH 或 PUT。

在 Postman 中,我可以使用带有一些 URL 参数的 PATCH 方法测试 API 并成功。

例如:

URL: https://example.com/user/account
URL parameters: email ----> example@example.com
URL parameters: password ----> 12345678
Method: PATCH

这在 Postman/Paw 中有效,但在 JMeter 中我设置了一个 HTTP 请求,添加了参数,但它失败了。

如何使用 JMeter 中的参数设置有效的 PATCH/PUT 请求?

【问题讨论】:

标签: jmeter http-put http-patch


【解决方案1】:

我通过在HTTP请求中添加参数来临时解决了这个问题:

https://example.com/user/account?email=example%40example.com&password=12345678

然后删除HTTP请求中的参数。 现在可以了。

我希望我能找到一个正式的解决方案来解决这个问题。

【讨论】:

    【解决方案2】:

    似乎 JMeter(至少从 2.13 r1665067 版开始)不支持使用“参数”表为 PATCH 请求传递参数。

    但是,您仍然可以使用以下解决方法传递参数:

    • 如果您想在查询字符串中包含您的参数 (GET-like),您可以将它们附加到路径:/foo/bar?param1=2&param2=21
    • 如果您想在正文中包含参数 (POST-like),您可以切换到“HTTP 请求”部分中的“正文数据”选项卡,并在此处提供您的编码参数,如下所示:param1=2&param2=21 .确保正确地对所有参数进行 URL 编码。此外,您必须在“HTTP 标头管理器”部分中添加一行以请求标头。添加标头Content-Type,其值为application/x-www-form-urlencoded

    【讨论】:

      【解决方案3】:

      只是为了完成/改进@Lukas 的回答,如果您从 CSV 文件导入测试参数,则需要将 HTTP 请求路径格式化如下:

      /foo/bar?param1=${csv_param1_name}&param2=${csv_param2_name}
      

      需要这样做,因为至少对于 PATCH 请求,参数表会被忽略。

      这也适用于 JMeter v4.0 r1823414。

      【讨论】:

        【解决方案4】:

        Jmeter 使用正文数据填充您的数据,但不需要标题,您可以将数据传递到后端。 enter image description here

        但是我用httpServletRequest获取参数却是空的,不知道为什么...

        【讨论】:

        • 我已经使用 contentType "application/json" 并将数据放入请求正文中,现在控制器可以使用@RequestBody 获取数据。注意:数据应该是json类型。
        【解决方案5】:

        如果您不必通过 URL 传递参数,您还可以使用 JMeter 的“HTTP Request”采样器的“Body Data”选项卡。它还支持占位符。 JMeter Patch Example

        PS:我使用 JMeter 5.1.1 版

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2020-04-16
          • 1970-01-01
          • 2017-04-15
          • 2012-06-30
          • 1970-01-01
          • 2018-04-11
          相关资源
          最近更新 更多