如何在jquery ajax调用中获取Rest Webservice Response头值

时间:2018-02-20 10:20:49

标签: java rest web-services jersey response

我有一个使用Jersey的休息Web服务实现,它在发布XML时返回一个Response。我在我的jsp中使用jquery ajax调用将XML内容发布到Web服务,如下所示。下面的代码运行正常,我得到了XML响应,并调用了成功函数,我可以根据需要获取新发布的XML内容。

但是,我想在下面的成功函数中获取响应头的值,如content-type,status等。有没有办法实现这一目标。当我使用邮递员验证时,我会看到内容类型,状态和其他详细信息。我想在ajax调用的成功函数中获取这些值。

enter image description here

@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){

                }
            });

任何帮助都将不胜感激。

1 个答案:

答案 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);
                }
            });