Pregunta

¿Cómo puedo leer secuencia HTTP con la página HTML en la codificación de la página?

Este es un fragmento de código que utilizo para obtener la secuencia HTTP. InputStreamReader tiene el argumento opcional de codificación, pero no tengo ideas sobre la forma de obtenerlo.

URLConnection conn = url.openConnection();
InputStream is = conn.getInputStream();
BufferedReader d = new BufferedReader(new InputStreamReader(is));
¿Fue útil?

Solución

Recuperación de una página web es un proceso bastante complicado. Es por eso que existen las bibliotecas como HttpClient . Mi consejo es que a menos que tenga una razón muy convincente de lo contrario, utilice HttpClient.

Otros consejos

Cuando la conexión se establised thru

URLConnection conn = url.openConnection ();

se puede obtener el nombre del método de codificación a través de url.getContentEncoding () para pasar esta cadena a InputStreamReader () por lo que el código es el siguiente

BufferedReader d = new BufferedReader (nuevo InputStreamReader (es decir, url.getContentEncoding ()));

La respuesta corta es URLConnection.getContentEncoding () . La respuesta correcta es lo que sugiere Cletus, el uso de una biblioteca apropiada terceros a menos que tenga una razón de peso para no hacerlo.

He tenido un problema muy similar para resolver recientemente. Al igual que las otras respuestas, también empecé a jugar con HttpClient et al. Sin embargo, esas bibliotecas requieren que usted sabe upfront la codificación del archivo que desea descargar. De lo contrario, la conversión del archivo HTML recuperado producirá en caracteres ilegibles.

Este enfoque no funcionará, ya que la codificación del archivo HTML sólo se especifica en el propio archivo HTML. Dependiendo de la versión HTML, la codificación se especifica en muchas formas diferentes, como cabecera XML, dos elementos diferentes de etiquetas meta de cabeza, etc. Si sigue este enfoque, se necesitarían:

  1. Descargar archivo y ver el contenido de averiguar la codificación mediante el análisis del contenido HTML.
  2. Descargar el archivo una segunda vez para especificar la codificación adecuada.

Especialmente analizar el contenido HTML para cadenas de codificación adecuadas es propenso a errores. En lugar de ello, sugiero que se basan en una biblioteca como JSoup , que va a hacer el trabajo para usted. Así que en lugar de descargar el archivo a través httpclient, utilice JSoup para recuperar el archivo para usted. Además, JSoup proporciona una agradable API para acceder a diferentes partes de la página HTML directamente (por ejemplo, título de la página).

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top