有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

更改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全部转换的情况下更改标题吗

谢谢


共 (2) 个答案

  1. # 1 楼答案

    您可以使用常规HTTP筛选器执行此操作:

    public class AddHeaderFilter implements Filter {
        public void doFilter(ServletRequest request, ServletResponse response,
                FilterChain chain) throws IOException, ServletException {
    
                HttpServletResponseWrapper wrappedResponse = new HttpServletResponseWrapper((HttpServletResponse)response)
                chain.doFilter(request, wrappedResponse);
                wrappedResponse.addHeader("myheaderName", "myHeaderValue");
    
            }
    
    
    }
    
  2. # 2 楼答案

    Response代替ResponseEntity