Question

Comment puis-je lire flux HTTP avec la page HTML dans le codage de la page?

Voici un fragment de code que j'utilise pour obtenir le flux HTTP. InputStreamReader a l'encodage argument optionnel, mais je n'ai aucune idée sur la façon de l'obtenir.

URLConnection conn = url.openConnection();
InputStream is = conn.getInputStream();
BufferedReader d = new BufferedReader(new InputStreamReader(is));
Était-ce utile?

La solution

Récupération d'une page Web est un processus assez compliqué. Voilà pourquoi les bibliothèques telles que HttpClient existent. Mon conseil est que si vous avez une raison vraiment convaincante sinon, utilisez HttpClient.

Autres conseils

Lorsque la connexion est establised à travers

URLConnection conn = url.openConnection ();

vous pouvez obtenir le nom de la méthode de codage à travers url.getContentEncoding () pour transmettre cette chaîne à InputStreamReader () de sorte que le code ressemble

BufferedReader d = new BufferedReader (nouveau InputStreamReader (est, url.getContentEncoding ()));

La réponse courte est URLConnection.getContentEncoding () . La bonne réponse est ce que Cletus suggère, utilisez une bibliothèque tierce partie appropriée sauf si vous avez une raison impérieuse de ne pas.

J'ai eu un problème très similaire à résoudre récemment. Comme les autres réponses, j'ai aussi commencé à jouer avec HttpClient et al. Cependant, ces bibliothèques exigent que vous savez dès le départ l'encodage du fichier que vous voulez télécharger. Dans le cas contraire, la conversion du fichier HTML récupéré donnera en caractères illisibles.

Cette approche ne fonctionnera pas, parce que l'encodage du fichier HTML est spécifié que dans le fichier HTML lui-même. Selon la version HTML, le codage est spécifié de différentes façons comme en-tête XML, deux éléments de balise meta tête différente, etc. Si vous suivez cette approche, vous devez:

  1. Télécharger le fichier et regardez le contenu de comprendre l'encodage en analysant le contenu HTML.
  2. Télécharger le fichier une deuxième fois pour spécifier l'encodage approprié.

En particulier, l'analyse syntaxique du contenu HTML pour les chaînes d'encodage correctes est sujette aux erreurs. Au lieu de cela, je vous suggère de compter sur une bibliothèque comme JSoup , qui fera le travail pour vous. Ainsi, au lieu de télécharger le fichier via httpclient, utilisez JSoup pour récupérer le fichier pour vous. De plus, JSoup offre une belle API pour accéder aux différentes parties de la page HTML directement (par exemple le titre de la page).

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top