【问题标题】:Issue in REST with Jersey while array of JSON submit for POST using Jquery,在使用 Jquery 为 POST 提交 JSON 数组时,使用 Jersey 的 REST 问题,
【发布时间】:2012-10-27 17:37:21
【问题描述】:

我有一个 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 客户端使用相同的东西,它正在工作,任何人都可以帮助我 使用请求对象类型为 POST 排序此问题。

【问题讨论】:

  • 如果它产生“application/json”,函数不应该返回一个字符串,而不是一个用户吗?另外,你有@Path 注解吗?
  • @EricB 用户使用“@XmlRootElement”注释,还添加了“@Path”
  • Users 类的外观如何?你能告诉我们发送到服务器的 JSON 吗?服务器如何响应您的请求?
  • 类用户是这样的@XmlRootElement public class Users{ private String firstName; private String middleName; public Users(String firstName, String middleName){ this.firstName = firstName; this.middleName = middleName } //TODO getter and Setter } JSON是这样的{"firstName":"First Name","middleName":"Middle"}
  • 请更新您的问题(将代码作为评论发布不是很有帮助)。你检查过电线上的具体内容吗? Tomcat 作为响应返回了什么? 404? 500?服务器日志中是否存在某些内容?

标签: jquery json spring rest jersey


【解决方案1】:

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

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

client.addFilter(new LoggingFilter());

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-05-01
    • 2014-01-23
    • 2013-10-05
    • 1970-01-01
    • 1970-01-01
    • 2018-12-16
    • 2013-01-06
    相关资源
    最近更新 更多