我有一个使用Jersey的休息Web服务实现,它在发布XML时返回一个Response。我在我的jsp中使用jquery ajax调用将XML内容发布到Web服务,如下所示。下面的代码运行正常,我得到了XML响应,并调用了成功函数,我可以根据需要获取新发布的XML内容。
但是,我想在下面的成功函数中获取响应头的值,如content-type,status等。有没有办法实现这一目标。当我使用邮递员验证时,我会看到内容类型,状态和其他详细信息。我想在ajax调用的成功函数中获取这些值。
@POST
@Consumes(MediaType.APPLICATION_XML)
@Produces(MediaType.APPLICATION_XML)
public Response postMessage(Message msg, @Context UriInfo uriInfo){
msgService.addMessage(msg);
URI uri = uriInfo.getAbsolutePathBuilder().path(String.valueOf(msg.getId())).build();
Response rs = Response.created(uri)
.entity(msg)
.status(Status.CREATED)
.build();
System.out.println(rs);
return rs;
}
以下是ajax调用:
$.ajax({
type: "POST",
url: "http://localhost:9090/messenger/webapi/messages",
data: message,
contentType: "application/xml; charset=utf-8",
dataType: "xml",
success: function(msg, status) {
$(msg).find("autor").each(function(){
alert($(this)[0].childNodes[0].nodeValue);
});
//Would like to alert the reponse headers like content-type received and status (201 in this case) here..
},
error: function(e){
}
});
任何帮助都将不胜感激。
答案 0 :(得分:0)
我能够通过查看Stack over flow中的几个帖子来解决这个问题。感谢Elyor发布上述评论。在此发布,以便它可以帮助面临类似问题的人。
HTTP响应代码: 我可以通过以下方式获得响应状态,内容类型: 响应状态:在这种情况下,我希望获得响应状态,HTTP响应代码(201)。能够在“完成”回调函数中使用参数获取此项,如下所示
响应标头:响应标头(如“Content-type”)是从传递给“Success”功能的请求对象中获取的。
$.ajax({
type: "POST",
url: "http://localhost:9090/messenger/webapi/messages",
data: message,
contentType: "application/xml; charset=utf-8",
dataType: "xml",
success: function(msg, status, request) {
alert("request: "+request.getResponseHeader("Content-type"));
$(msg).find("autor").each(function(){
alert($(this)[0].childNodes[0].nodeValue);
});
},
error: function(e){
},
complete: function(e, xhr, settings){
alert("Response status: "+e.status);
}
});