Ich hatte kürzlich ein sehr ähnliches Problem zu lösen. Wie die anderen Antworten habe auch ich angefangen, mit HttpClient und Co. herumzuspielen. Allerdings erfordern diese Bibliotheken, dass man die Kodierung der Datei, die man herunterladen möchte, im Voraus kennt. Andernfalls führt die Konvertierung der abgerufenen HTML-Datei zu unlesbaren Zeichen.
Dieser Ansatz wird nicht funktionieren, da die Kodierung der HTML-Datei nur in der HTML-Datei selbst angegeben wird. Je nach HTML-Version wird die Kodierung auf viele verschiedene Arten angegeben, z. B. im XML-Header, in zwei verschiedenen head-Meta-Tag-Elementen usw. Wenn Sie diesen Ansatz verfolgen, müssten Sie dies tun:
- Laden Sie die Datei herunter und sehen Sie sich den Inhalt an, um die Kodierung durch Parsen des HTML-Inhalts zu ermitteln.
- Laden Sie die Datei ein zweites Mal herunter, um die richtige Kodierung anzugeben.
Insbesondere das Parsen von HTML-Inhalten für die korrekte Kodierung von Zeichenketten ist fehleranfällig. Stattdessen schlage ich vor, dass Sie sich auf eine Bibliothek wie JSoup die Ihnen die Arbeit abnimmt. Anstatt also die Datei über httpclient herunterzuladen, können Sie JSoup verwenden, um die Datei für Sie abzurufen. Außerdem bietet JSoup eine nette API für den direkten Zugriff auf verschiedene Teile der HTML-Seite (z. B. den Seitentitel).