Estoy buscando una página web usando Apache httpcomponents Java library. Después de conectar el resultado que obtengo es un HttpEntity
que tiene un método getContent()
que devuelve un InputStream
y también tiene un método writeTo()
que escribe en un OutputStream.En httpclient, ¿cuál es la forma más elegante/correcta de convertir HttpEntity en una cadena?
Quiero convertir el resultado en una Cadena para extraer información. ¿Cuál es la forma más elegante (y segura) de hacer esto?
Algunas soluciones posibles:
- escribir en un
ByteArrayOutputStream
y luego convertir esos bytes de una cadena con un constructor de String - uso InputStreamReader para leer directamente de la corriente, y poner en un StringBuilder
Ambos se sienten un poco feos. ¿Recomendarías elegir uno de estos o algo más?
Creo que esta es la respuesta correcta, la biblioteca proporciona la clase EntityUtils exactamente por este motivo –
El problema con este enfoque es que si ya ha limpiado los recursos llamando al httpResponse.close() y desea obtener la representación de cadena de la Entidad en otro lugar, utilizando el código anterior causará una excepción "java.net.SocketException: socket closed" para ser lanzada. –