Java 如何返回Apache';在Spring';是HttpServletResponse吗?

Java 如何返回Apache';在Spring';是HttpServletResponse吗?,java,spring,servlets,proxy,httpresponse,Java,Spring,Servlets,Proxy,Httpresponse,我有一个使用Spring的端点: @RequestMapping(value = {"/hello"}, method = RequestMethod.GET) @ResponseBody public String getContent(@RequestParam(value = "url", required = true) String url) 我希望它返回与我发送get tourl时得到的完全相同的响应。我正在使用Apache库执行GET,它将返回一个CloseableHttpRes

我有一个使用Spring的端点:

@RequestMapping(value = {"/hello"}, method = RequestMethod.GET)
@ResponseBody
public String getContent(@RequestParam(value = "url", required = true) String url)
我希望它返回与我发送get to
url
时得到的完全相同的响应。我正在使用Apache库执行GET,它将返回一个
CloseableHttpResponse
。如何将此响应作为端点的响应返回?我当前的代码复制了这个响应,这不是我想要的。我想直接返回
可关闭的httpresponse
。我之所以想这样做,是因为一些网站拥有非常庞大的数据,我希望避免不得不复制这些数据

@RequestMapping(value = {"/hello"}, method = RequestMethod.GET)
@ResponseBody
public String getContent(@RequestParam(value = "url", required = true) String url, HttpServletResponse response)
     CloseableHttpResponse httpResponse = useApacheLibraryAndSendGetToUrl(url);
     for (Header header : httpResponse.getAllHeaders()) {
         response.addHeader(header.getName(), header.getValue());
     }
     response.setStatus(httpResponse.getStatusLine().getStatusCode());
     return EntityUtils.toString(entity, "UTF-8");
}

您可以为
CloseableHttpResponse
类型编写自定义的
HttpMessageConverter
,这将允许您简单地返回
@responseBy CloseableHttpResponse


有关详细信息,请参见。

当然要小心在适当的时间实际关闭
CloseableHttpResponse
。此外,直接将
CloseableHttpResponse
实体的
InputStream
复制到
HttpServletResponse
OutputStream
,可能会提供更好的性能或内存使用率,而不是使用
EntityUtils.toString
首先将响应复制到字符串中。如果我使用转换器,这不也是我在这里做的事情吗,我必须从CloseableHttpResponse复制数据,并在Spring中将其转换为某种形式的响应?我忘了提到我遇到的问题是一些网站有非常巨大的标题数据,我想避免复制这些。你所做的很好。