我使用一些数据从JQuery发送POST,但通过我的Javascript我得到了:
400 Bad Request错误和REST未触发
从海报尝试我得到以下内容:
HTTP状态415 - 不支持的媒体类型。服务器拒绝了此请求,因为请求实体的格式不受所请求方法所请求资源的支持。
这是我的JQuery:
function doUpdate(path, rdf)
{
var encodedRdf = base64_encode(rdf);
var data = {"path": path, "rdf": encodedRdf};
var sUrl = "http://localhost:8080/browsing/services/RDF/update";
$.ajax({
type: "POST",
url: sUrl,
contentType: "application/json",
data: data,
dataType: "json",
async: false,
success: function parse(resp, status, xhr) {
$("#message").html("STATUS: " + xhr.status + " " + xhr.statusText + "\n" + resp);
$("#message").hide();
$("#login_message").html("<font color='green'><b>Record succesfully updated</b></font>d");
},
error: function(resp, status, xhr){
$("#message").html("ERROR: " + resp.status + " " + resp.statusText + "\n" + xhr);
$("#message").show();
}
});
}
这是我的REST资源:
@POST
@XmlElement(name = "data")
@Path("/update")
@Consumes({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON})
@Produces(MediaType.APPLICATION_JSON)
public void update(Data data) {
...
}
这是我的数据对象:
@XmlRootElement
public class Data implements Serializable {
private String path;
private String rdf;
/**
* @return the path
*/
public String getPath() {
return path;
}
/**
* @param path the path to set
*/
public void setPath(String path) {
this.path = path;
}
/**
* @return the rdf
*/
public String getRdf() {
return rdf;
}
/**
* @param rdf the rdf to set
*/
public void setRdf(String rdf) {
this.rdf = rdf;
}
任何人都可以告诉我问题在哪里?
谢谢,
答案 0 :(得分:0)
你在web.xml中有以下init参数;
<init-param>
<param-name>com.sun.jersey.api.json.POJOMappingFeature</param-name>
<param-value>true</param-value>
</init-param>
答案 1 :(得分:0)
按如下方式编写JSON并对其进行字符串化解决了它!
var data = {"path": path, "rdf": encodedRdf};
...
data: JSON.stringify(data),