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

时间:2015-05-21 18:32:25

标签: java 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)

3 个答案:

答案 0 :(得分:0)

我认为你必须像这样创建一个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(); 
}

答案 1 :(得分:0)

好的,在朋友的帮助下,我能够弄清楚这一点。我的网址正在重定向。这导致我的POST变成了GET。感谢大家的帮助。您的确认消除了可能性,并帮助指导我找到答案。

答案 2 :(得分:0)

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

进入菜单:BUILD - > BUILD ARTIFACTS - >建造或重建这就是它。