更改Java web服务响应的标头,而不进行Jackson转换
我在从web应用程序向web服务传输数据时遇到了一些问题
因此,我有一个带有Spring、Hibernate和Jackson的JavaJAX-RSWeb服务。到目前为止,我已经使用JSON-P从web服务获取数据,但现在我需要进行POST调用,所以我尝试切换到CORS
使用JSON-p的旧代码:
@GET
@Path("/getUsers")
@Produces(MediaType.APPLICATION_JSON)
public ResponseEntity getUsers(@QueryParam("callback") String callback) {
Set<User> list = null;
list = userBo.getUsers();
if (list != null) {
return callback + "(" + list.toString() + ");";
} else {
return null;
}
}
我一直试图通过以下操作更改响应的标题:
@GET
@Path("/getUsers")
@Produces(MediaType.APPLICATION_JSON)
public ResponseEntity getUsers(@QueryParam("callback") String callback) {
Set<User> list = null;
list = userBo.getUsers();
HttpHeaders headers = new HttpHeaders();
headers.add("Access-Control-Allow-Origin", "*");
headers.add("Access-Control-Allow-Methods", "GET, OPTIONS, POST");
headers.add("Access-Control-Allow-Headers", "Content-Type");
return new ResponseEntity(list.toString(), headers, HttpStatus.OK);
}
但是Jackson将整个响应转换为JSON字符串。有人知道我如何在不让jackson全部转换的情况下更改标题吗
谢谢
# 1 楼答案
您可以使用常规HTTP筛选器执行此操作:
# 2 楼答案
用
Response
代替ResponseEntity