JMeter http 请求删除 body

JMeter http request DELETE with body

我有专有的基于 http API 的 JMeter 测试。不幸的是,API 的某些端点期望带有请求 body 的 http DELETE 方法(我知道它的 questionable API design to use DELETE with request body,但我无法更改 API 并且需要来测试它)。

如何从 JMeter 对其进行测试?似乎标准的 HttpRequest 采样器在没有任何警告的情况下默默地忽略了我的 body 负载。 (当我在 POSTMAN 中尝试它时,它发送一个请求 body 用于 DELETE 方法)

我确实找到了一个名为 HTTP Raw Request 的旧 JMeter 插件,它对我的​​ body 负载有一定帮助,但仍然没有 auto-calculate "Content-Length:" http header ...所以我必须为每个测试用例手动执行 - 这对于动态生成的数据有效负载来说是一种痛苦。

所以我的问题仍然存在:如何使用来自 JMeter 的请求 body 测试 HTTP DELETE?

截图如下:

注意 1: 从 jMeter 版本开始。 3.1(参见bugzilla #60358)已修复 Http GET 请求能够在请求中发送 body...但未添加 DELETE。

注意 2: 使用 body 的 DELETE 请求参见 bugzilla #61443

注意 3: 我正在使用名为 "Java" 的客户端实现。

根据参考文档:

http 请求采样器有 2 个实现。 非默认 一个名为 "Java" 的问题与不传递 DELETE 请求正文有关。 幸运的是,调用 "HttpClient4" 的 default 实现根据 JMeter 数据输入屏幕正确传递了 DELETE 操作的请求负载。 要更改 http 请求采样器的实现,您必须转到 HTTP 请求采样器的 "advanced" 选项卡和 select 客户端实现 "HttpClient4" 而不是 "Java"。这是屏幕截图:

之后执行时它会正确发送删除操作的请求负载。这是屏幕截图: