我在将一些 JSON 发布到使用 Jersey REST 构建的 Web 服务时遇到问题。数据似乎永远不会到达服务器。
整个任务流程有点像这样:
Javascript POST JSON -> Webserver -> webserver 获取 JSON 并打印出来
这是应该将 JSON 数据发布到服务器的 Javascript,其路径为/posttest
:
<script type="text/javascript">
$(function() {
var name = "Tony";
$.post(
'/posttest',
function (data) {
alert("sune " + data.name);
});
})
</script>
我有一个运行所有这些类的网络服务器(Grizzly):
此类使用 JAX-RS API 来处理使用 JSON 数据的 POST 请求:
@Path("/posttest")
public class PostTest {
@POST
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
public Response doPost(StatusBean b) {
System.out.println("---> " + b.getName());
StatusBean statusBean = new StatusBean();
return Response.status(Response.Status.ACCEPTED).entity(statusBean).build();
}
这是数据将被序列化到和从中的 bean 的定义:
@XmlRootElement
public class StatusBean {
private String name;
public StatusBean() {
}
public String getName() {
return name;
}
public void setName(String name) {
this.name= name;
}
}
这是在控制台中打印出数据的测试客户端类
ClientConfig cc = new DefaultClientConfig();
Client c = Client.create(cc);
WebResource r = c.resource("http://localhost:9998/posttest");
StatusBean post = r.type(MediaType.APPLICATION_JSON_TYPE).post(StatusBean.class, new StatusBean());
System.out.println("--> " + post.getName());