Estamos utilizando HTTPClient para implementar una API REST.¿Por qué es más eficiente en cuanto a la memoria leer la entrada como secuencia vs. cadena?
que estamos leyendo la respuesta del servidor usando:
method = new PostMethod(url);
HttpClient client = new HttpClient();
int statusCode = client.executeMethod(method);
String responseBody = method.getResponseBodyAsString();
Cuando hacemos esto obtenemos la siguiente advertencia:
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.
El docs van a decir:
HttpClient es capaz de transmitir de manera eficiente solicitud/respuesta del cuerpo. Las entidades grandes pueden enviarse o recibirse sin estar almacenadas en la memoria. Esto es especialmente crítico si se pueden ejecutar métodos HTTP al mismo tiempo. Si bien existen métodos de conveniencia para tratar con entidades tales como cadenas o matrices de bytes , se desaconseja su uso. A menos que se utilicen con cuidado, pueden fácilmente llevar a condiciones de falta de memoria, ya que implican el almacenamiento en búfer de la entidad completa en la memoria.
Así que mi pregunta es, si necesita la respuesta completa como String (es decir, para almacenar en un DB, o analizar usando DOM), ¿por qué es más eficiente utilizar una transmisión?