不推荐使用HttpMethod getResponseBodyAsString,但是为什么

时间:2019-01-25 18:37:24

标签: java performance apache-httpclient-4.x

正在经历Apache对HttpClient(http://hc.apache.org/httpclient-3.x/performance.html)的建议 提到

  

响应流:建议使用以下命令将HTTP响应正文作为字节/字符流使用:   HttpMethod#getResponseBodyAsStream方法。指某东西的用途   HttpMethod#getResponseBody和HttpMethod#getResponseBodyAsString是   强烈劝阻。

但找不到相同的原因。我目前正在将getResponseBodyAsString与GetMethod一起使用,想知道我做错了方法吗?

1 个答案:

答案 0 :(得分:4)

从文档中:“ HttpClient能够进行有效的请求/响应正文流传输。大型实体可以在不缓存在内存中的情况下提交或接收。”

getResponseBodyAsString方法要求HttpClient将整个响应缓冲在内存中。基本上,您已经给HTTP服务器提供了通过发送巨大响应来使进程崩溃的机会。

但是你必须做你必须做的事。如果您的应用程序要求您将响应作为内存中的String处理,并且您确定响应不会太大(或者您愿意添加大小检查),那么就去做吧