4

我有一个 REST 的 Jersey 实现,它提供了来自 Tomcat(Server1)的 API

@POST
@Consumes({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML})
@Produces({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML })
public Users create(Users users) {
    return dao.create(users);
}

并且请求是从 Apache (Server2) 的 jquery 客户端发布的

$.ajax({
    type: 'POST',
    contentType: 'application/json',
    url: rootURL,
    dataType: "json",
    data: formToJSON(),
    success: function(data, textStatus, jqXHR){
        alert('user created successfully');

    },
    error: function(jqXHR, textStatus, errorThrown){
        alert('user error: ' + textStatus);
    }
});

此 jquery 实际上正在向服务器提交请求,但服务器/API 无法识别此请求。所有其他请求(如 @Formparam /@Header 等带有 POST /GET 的)都在工作

如果我使用 REST 客户端使用相同的东西,它正在工作,任何人都可以帮我用请求对象类型对这个问题进行排序。

4

1 回答 1

0

调试通信问题的最佳方法是检查发送到服务器的标头。为了完成此任务,您可以使用 Chrome 开发人员工具在浏览器中检查请求。打开 Chrome,按 F12,转到 Network 选项卡,按 XHR 过滤并强制发出此请求。复制所有标题并将它们张贴在这里。

然后,使用 Jersey 客户端 API 进行测试。启用日志记录,向客户端添加过滤器:

client.addFilter(new LoggingFilter());

然后查看控制台并将输出与 Chrome Dev Tools 的前一个输出进行比较。

于 2012-11-12T19:37:29.843 回答