如何对REST Web服务执行POST请求?

时间:2016-03-07 08:51:37

标签: web-services rest post

我有一个RESTful Web服务,我在其中编写了一个接收POST个请求的方法。

我正在尝试通过网址http://localhost:8091/prjctname/post访问该方法。

但它抛出以下错误:

  

HTTP状态405 - 不支持请求方法“GET”
  类型:状态报告
  消息:不支持请求方法'GET'    description:请求的资源

不允许使用指定的HTTP方法

以下是代码段。

@RequestMapping(value = "/post", method = RequestMethod.POST)
@Produces("application/json")
@ResponseBody 
public String createUser(@RequestBody PCDBean bean, HttpServletRequest request) {

    String username = null;
    String password = null;
    System.out.println("inside post method");

    String result = service.getCustomer(username, password);
    if(result != null) {
        return username + password;
    } else {
        return "failure";
    }
}

3 个答案:

答案 0 :(得分:5)

解释405错误

您正在向仅支持GET请求的端点执行POST请求。在这种情况下,预期结果是405错误:

  

6.5.5. 405 Method Not Allowed

     

405(Method Not Allowed)状态代码表示该方法   请求行中收到的信息由原始服务器知道但不是   目标资源支持。 [...]

选择正确的工具

我猜您正在尝试使用浏览器地址栏访问该端点。但是,在浏览器地址栏中键入资源URL时,您正在执行GET请求。这是浏览器的默认行为。 处理它

因此,一旦您只能执行GET请求,浏览器地址栏就无法为您提供测试REST API的灵活性。

要测试REST API,您应该使用正确的工具。他们将使您能够使用all the HTTP methods(包括POST),设置request headers以及浏览器地址栏中没有的其他功能来执行请求。

只列出一些:

答案 1 :(得分:0)

在我的情况下,真正的问题是我的文本与服务器中的文本不完全相同。该对象存在拼写错误。应该准确 “ {\ n” +“ \” jobName \“:\” MOVE_TO_PICK_POSITION \“ \ n” +“}”; 我在用别的东西。

405错误消息使我浪费了很多时间,因为它使我认为我的POST请求存在一些问题。

希望这会有所帮助。

答案 2 :(得分:0)

您需要让浏览器接受发布请求,如下所示:

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>Login Page</title>
</head>
<body>

<form action="login" method="post">
    name: <input type="text" name="name"> <br>
    password: <input type="password" name="password"> <br>
    <input type="submit" value="submit">
</form>

</body>
</html>