[英]Jersey Method not allowed 405
我是其他服务的新手。 我正在尝试创建一个从客户端接受json字符串的服务。 当我使用JQuery调用此服务时,我收到405错误。 下面是ws的Java代码:
@POST
@Path("logevent")
@Consumes(MediaType.APPLICATION_JSON)
public boolean logEvent(String obj)
{
System.out.println(obj);
return true;
}
和
@Path("getdata")
@GET
public String getData()
{
return "Hello";
}
和发布JSON的jQuery代码是:
var json ="{\"userName\":\"testtest\"}";
var json_data = JSON.stringify(json);
$.ajax({
type: "POST",
url: "http://localhost:8080/log/log/logevent",
// The key needs to match your method's input parameter (case-sensitive).
data: json_data,
contentType: "application/json",
dataType: "json",
success: function(data){alert(data);},
failure: function(errMsg) {
alert(errMsg);
}
出了什么问题? 帖子不起作用,但是当我使用URL http://<serverip>/log/log/getdata
get时,我得到了响应。
JSON MessageBodyReader
能够将JSON流解组为JAXB bean(或POJO),但不能解组为String。 创建一个JAXB bean,如:
@XmlRootElement
public class User {
private String userName;
public String getUserName() {
return userName;
}
public void setUserName(final String userName) {
this.userName = userName;
}
}
并将您的POST
资源方法更改为:
@POST
@Path("logevent")
@Consumes(MediaType.APPLICATION_JSON)
public boolean logEvent(User obj) {}
首先要确保路径是/log/log/logevent
然后尝试更改请求/响应类型:
您应该使用application/json;charset=UTF-8
(W3C XHR规范),而且您的Web服务不响应JSON但是ouptut一个布尔值,也许您应该更改响应类型。
例如,使用UTF-8:
JAX-RS
@Consumes("application/json;charset=UTF-8")
jQuery的
contentType:"application/json;charset=UTF-8"
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.