JMeter HTTP请求:始终发送GET方法

5
大家好,我每次向我的测试REST服务发送的所有HTTP请求都是使用GET方法发送的。Tomcat会拒绝该请求并返回405-不支持的方法错误。无论我将其更改为什么(如POST、PUT等),Jmeter始终发送GET请求。 我通过创建一个Threadgroup,并添加一个HTTP Request Sampler和View Results Tree来设置了最简单的测试用例。我向REST服务发送JSON正文,该服务只是回显请求以及一个ID。在Google的REST Client UI中运行良好。 以下是View Results Tree的结果:
Response code: 405
Response message: Method Not Allowed

Response headers:
HTTP/1.1 405 Method Not Allowed
Server: Apache-Coyote/1.1
Allow: POST
Content-Type: text/html;charset=utf-8
Content-Language: en
Content-Length: 1045
Date: Fri, 18 Jul 2014 21:39:27 GMT

这是我的REST服务中的RequestMapping:
@RequestMapping(method = RequestMethod.POST, consumes = "application/json", produces = "application/json")

以下是翻译的结果:
这里是一些来自我的测试结果的截图。我想知道为什么在树形结构中的HTTP请求下面有两个URI?请注意,POST请求看起来是正确的。 GET请求 POST请求 测试计划 头部管理器
5个回答

6

2
尝试在HTTP请求的“路径”值末尾加上“/”。这将会在“查看结果树”中移除GET结果。请注意保留HTML标签。

谢谢。这解决了我的问题,你能解释一下为什么吗? - Minh Nguyen

2

我曾经也遇到过同样的问题。在找到解决方法之前,我尝试了所有可能的方法,并阅读了这个问题以及所有回答。

自动选择重定向


0

Content-Type 应该是 application/json,而不是 text/html。

请在 HTTP Header Manager 中设置。我假设您已经正确设置了身份验证详细信息。


嗨,我添加了一个HTTP头管理器,并将Content-Type设置为application/json,但我仍然遇到了相同的错误。我将Header Manager设置在与HTTP请求相同的级别上,也将其移动到线程组的更高级别。两次都出现了相同的错误。我确保Content-Type被正确发送。 - Nathan Weddle
你能提供测试计划的截图吗?我正在使用JMeter测试REST API,没有任何问题。 - vins
尝试一下并确认。http://java-success.blogspot.com/2013/05/jmeter-for-testing-restful-web-services.html - vins
好的,所以我不再发送请求正文,而是添加了一个无名称的参数,并设置value = {"name": "Snoopy"},就像博客中的示例一样,我收到了相同的结果。JMeter发送了一个GET而不是POST。 - Nathan Weddle
我也遇到了jmeter 5.0的同样问题。即使指定了POST,它仍然发送GET请求。我也尝试取消选中“跟随重定向”复选框,但仍然不起作用。 - Binita Bharati

0

我们需要正确设置三件事情。

  1. 内容类型应该是application/json
  2. 在路径中正确设置端点,可以在Soup UI中看到
  3. 检查API将在哪个端口上运行[您可以首先在Soup UI上检查所有这些,然后尝试在JMeter中运行相同的操作]

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接