Frage

Wie kann ich den HTTP -Stream mit der HTML -Seite in der Codierung der Seite lesen?

Hier ist ein Codefragment, mit dem ich den HTTP -Stream abhält. InputStreamReader Hat das optionale Argument der Codierung, aber ich habe keine Vorstellungen darüber, wie ich es erhalten kann.

URLConnection conn = url.openConnection();
InputStream is = conn.getInputStream();
BufferedReader d = new BufferedReader(new InputStreamReader(is));
War es hilfreich?

Lösung

Das Abrufen einer Webseite ist ein einigermaßen komplizierter Prozess. Deshalb Bibliotheken wie Httpclient existieren. Mein Rat ist, dass Sie httpclient verwenden, es sei denn, Sie haben einen wirklich überzeugenden Grund.

Andere Tipps

Wenn die Verbindung durch eingerichtet ist durch

UrlConnection conn = url.openconnection ();

Sie können den Namen der Codierungsmethode durch URL.getContentCoding () erhalten. Geben Sie diese Zeichenfolge also an InputStreamReader () weiter, sodass der Code aussieht.

BufferedReader D = New BufferedReader (neuer InputStreamReader (IS, url.getContentCoding ()));

Die kurze Antwort lautet UrlConnection.getContentCoding (). Die richtige Antwort ist das, was Cletus vorschlägt. Verwenden Sie eine geeignete Bibliothek Dritter, es sei denn, Sie haben einen überzeugenden Grund, dies nicht zu tun.

Ich hatte kürzlich ein sehr ähnliches Problem. Wie die anderen Antworten habe ich auch angefangen, mit Httpclient et al. Diese Bibliotheken erfordern jedoch, dass Sie die Codierung der Datei, die Sie herunterladen möchten, im Voraus kennen. Andernfalls liefert die Konvertierung der abgerufenen HTML -Datei in unlesbaren Zeichen.

Dieser Ansatz funktioniert nicht, da die Codierung der HTML -Datei nur in der HTML -Datei selbst angegeben ist. Abhängig von der HTML -Version wird die Codierung auf viele verschiedene Arten wie XML -Header, zwei verschiedene Kopf -Meta -Tagelemente usw. angegeben. Wenn Sie diesem Ansatz folgen, müssten Sie:

  1. Laden Sie die Datei herunter und schauen Sie sich den Inhalt an, um die Codierung zu ermitteln, indem Sie den HTML -Inhalt analysieren.
  2. Laden Sie die Datei ein zweites Mal herunter, um eine ordnungsgemäße Codierung anzugeben.

Insbesondere das Parsen von HTML-Inhalten für ordnungsgemäße Codierungszeichenfolgen ist fehleranfällig. Stattdessen schlage ich vor, Sie verlassen sich auf eine Bibliothek wie JSOUP, was den Job für Sie erledigen wird. Anstatt die Datei über httpclient herunterzuladen, verwenden Sie JSOUP, um die Datei für Sie abzurufen. Darüber hinaus bietet JSOUP eine nette API, um auf verschiedene Teile der HTML -Seite direkt zuzugreifen (z. B. Titel des Seitens).

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top