在 Jersey 中使用 POST 方法时返回 405 错误
405 error returned when using POST method in Jersey
我正在使用 Jersey,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)
.
我认为您必须像这样创建一个 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,就是这样。
我正在使用 Jersey,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)
.
我认为您必须像这样创建一个 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,就是这样。