2012-11-07 95 views
4

我有REST的泽西实行,其提供从Tomcat(服务器1)一个API问题与泽西REST,

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

,并要求从一个jquery客户端发布从阿帕奇(服务器2)

$.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实际上是提交请求到服务器,但POST/GET正在服务器/ API无法认识到这一点request.Also像@Formparam /所有其他请求@头等等

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

+0

如果它产生“application/json”不应该函数返回一个字符串,而不是一个Users?另外,你有一个@Path注释? –

+0

@EricB用户使用'@XmlRootElement'进行了注释,并且还添加了'@Path' – user1806652

+1

'用户'类的外观如何?你能告诉我们JSON发送到服务器?服务器如何响应您的请求? –

回答

0

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

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

client.addFilter(new LoggingFilter()); 

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