我使用泽西岛并且对GET
和PUT
来电没有任何问题,但出于某种原因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)
。
答案 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 - >建造或重建这就是它。