Мы используем HTTPClient для реализации REST API.
Мы читаем ответ сервера, используя:
method = new PostMethod(url);
HttpClient client = new HttpClient();
int statusCode = client.executeMethod(method);
String responseBody = method.getResponseBodyAsString();
Когда мы делаем это, мы получаем это предупреждение:
Dec 9, 2009 7:41:11 PM org.apache.commons.httpclient.HttpMethodBase getResponseBody
WARNING: Going to buffer response body of large or unknown size. Using getResponseBodyAsStream instead is recommended.
Далее в документах говорится:
HttpClient поддерживает эффективную потоковую передачу тела запроса/ответа. Большие объекты могут быть отправлены или получены без буферизации в памяти. Это особенно важно, если несколько HTTP-методов могут выполняться одновременно. Хотя существуют удобные методы для работы с сущностями, такими как строки или массивы байтов, их использование не рекомендуется. Если их не использовать осторожно, они могут легко привести к нехватке памяти, поскольку они предполагают буферизацию всего объекта в памяти.
Итак, мой вопрос: если вам нужен полный ответ в виде строки (т. Е. Для хранения в БД или для анализа с использованием DOM), почему использование потока более эффективно для памяти?