在 Jersey 中使用 POST 方法时返回 405 错误

405 error returned when using POST method in Jersey

我正在使用 Jersey,GETPUT 调用没有问题,但由于某种原因 POST 拒绝工作;我一直收到 405 返回。

我已经在我的方法上尝试了签名的多种排列,我开始怀疑是否还缺少其他东西。

下面是一个不起作用的例子:

服务器端:

@Path("/tmm")

public class TmmRes  {

@POST
@Path("/mypost")
@Consumes(MediaType.APPLICATION_JSON)
public Response postTest(String input) {
    System.out.println("Made it to POST: "+input);
    return Response.status(201).entity(input).build(); 
}

}

客户端:

Client client = Client.create();
WebResource webResource = client.resource("http://localhost:8888/api/v1").path("tmm").path("mypost");
String input = "{\"address\":\"myaddress\",\"user\":4}";
ClientResponse response = webResource.type(MediaType.APPLICATION_JSON).post(ClientResponse.class, input);

我意识到使用 JSON 我应该有一个输入绑定到的对象,但我已经降低了复杂性以简单地使它工作。

有人有什么见解吗?顺便说一下,我正在使用 Tomcat (6.0.43).

我认为您必须像这样创建一个 POJO:

public class User {

private String address;
private Integer user;

// getters and setters

}

然后改变

@POST
@Path("/mypost")
@Consumes(MediaType.APPLICATION_JSON)
public Response postTest(String input) {
    System.out.println("Made it to POST: "+input);
    return Response.status(201).entity(input).build(); 
}

至:

@POST
@Path("/mypost")
@Consumes(MediaType.APPLICATION_JSON)
public Response postTest(User input) {
    System.out.println("Made it to POST: "+input);
    return Response.status(201).entity(input).build(); 
}

好的,在朋友的帮助下,我终于弄明白了。我的 URL 正在重定向。这导致我的 POST 变成了 GET。感谢大家的帮助。您的确认消除了可能性并帮助我找到了答案。

我在 IntelliJ 中解决了这个问题。

转到菜单:BUILD -> BUILD ARTIFACTS -> BUILD 或 REBUILD,就是这样。