我正在使用org.apache.http.HttpClient从URL获取响应,并使用EntityUtils.toString()将HttpEntity响应转换为字符串 .
但是,当返回的数据很大时,有时会抛出OutOfMemory错误 . 这是有道理的,因为堆空间不能将整个响应字符串保存在内存中 .
我的问题是如何将HttpClient的HttpEntity响应转换为字符串并减少这些OutOfMemoryErrors的机会(假设我不能增加堆大小)?
我更喜欢替代方法,以便像EntityUtils.toString()一样高效或接近效率 .
例外:
java.lang.OutOfMemoryError: Java heap space
at org.apache.http.util.CharArrayBuffer.(CharArrayBuffer.java:59)
at org.apache.http.util.EntityUtils.toString(EntityUtils.java:230)
at org.apache.http.util.EntityUtils.toString(EntityUtils.java:273)
这是我的代码:
import org.apache.http.util.EntityUtils;
import org.apache.http.client.*;
url = "http://test.com/test"
HttpClient client = new DefaultHttpClient();
HttpGet get = new HttpGet(url);
HttpResponse response = client.execute(get);
HttpEntity entity = response.getEntity();
String result = EntityUtils.toString(entity); //alternative???