我经历过这个link .但这并没有帮助我。
我正在使用 jersey lib v1.17.1。 我的 Jersey 休息服务:
@POST
@Consumes({MediaType.APPLICATION_JSON})
@Produces({MediaType.APPLICATION_JSON})
@Path("/post1")
public ResponseBean post1(@QueryParam("param1")String param1)
{
return ResponseFactory.createResponse(param1, "TEST", "TEST", null, true);
}
网址是:/test/post1
我的 ajax 调用:
var d = {"param1":"just a dummy data"};
$.ajax({
type : "POST",
url : "http://localhost:7070/scl/rs/test/post1",
contentType :"application/json; charSet=UTF-8",
data : d,
dataType : "json"
})
.done(function(data){
console.log(data);
})
.fail(function(data){
console.log(data);
});
它命中我的休息服务,但作为 param1
我总是得到空值。替代解决方案是添加带有 @XMLRootElement
的 JavaBean,这会将 java 对象编码/解码为 json,反之亦然,但我不想使用它。
有什么方法可以使用 @QueryParam
之类的适当注释来发布和接收数据吗?
请帮忙
最佳答案
你的服务器端代码应该是这样的:
@POST
@Consumes({MediaType.APPLICATION_JSON})
@Produces({MediaType.APPLICATION_JSON})
@Path("/post1")
public ResponseBean post1(Data param1)
{
return ResponseFactory.createResponse(param1, "TEST", "TEST", null, true);
}
其中 Data
是一个用 @XmlRootElement
注释的 (POJO) 类,对应于您的客户端将发送的 JSON 数据(即,有一个 param1
带有 getter 和 setter 的字段)。 JAX-RS 实现会将 POST 的主体解码为 Data
的实例。
@QueryParam
注释用于检索(通常)GET
请求中的查询参数。查询参数是问号(?
)之后的参数。例如:@QueryParam("start") String start
将在处理以下请求时映射设置为 1
:GET http://foo.com/bar?start=1
,但这不是你在你的情况下所做的,AFAICS。
关于java - 如何使用 JSON 数据对 Jersey rest 服务进行 post ajax 调用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21699745/