我有一个RESTful Web服务,我在其中编写了一个接收POST
个请求的方法。
我正在尝试通过网址http://localhost:8091/prjctname/post
访问该方法。
但它抛出以下错误:
HTTP状态405 - 不支持请求方法“GET”
不允许使用指定的HTTP方法
类型:状态报告
消息:不支持请求方法'GET' description:请求的资源
以下是代码段。
@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";
}
}
答案 0 :(得分:5)
您正在向仅支持GET
请求的端点执行POST
请求。在这种情况下,预期结果是405
错误:
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>