Was ist in httpclient die eleganteste/korrektste Art, Httpentity in eine Zeichenfolge zu verwandeln?
-
19-09-2019 - |
Frage
Ich hole eine Webseite mit der Apache Httpcomponents Java Library. Nach dem Verbinden des Ergebniss, das ich bekomme, ist ein HttpEntity
das hat eine Methode getContent()
was zurückgibt und InputStream
und hat auch eine Methode writeTo()
das schreibt an einen Ausgangsstream.
Ich möchte das Ergebnis in eine Zeichenfolge zum Extrahieren von Informationen verwandeln. Was ist der eleganteste (und sicherste) Weg, dies zu tun?
Einige mögliche Lösungen:
- Schreiben Sie zu a
ByteArrayOutputStream
und wandeln Sie diese Bytes dann mit einem String -Konstruktor in eine Zeichenfolge um - Verwenden Sie InputStreamReader, um direkt aus dem Stream zu lesen und in einen StringBuilder zu setzen
Beide fühlen sich ein bisschen hässlich an. Würden Sie empfehlen, eines davon oder etwas anderes auszuwählen?
Lösung
Was ist mit (Pseudo):
BasicResponseHandler handler = new org.apache.http.impl.client.BasicResponseHandler ();
String str = httpClient.execute(request, handler);
Sie müssten in diesem Fall selbst Ausnahmen selbst bewältigen.
Andere Tipps
System.out.println (Entityutils.toString (httPresponse.getEntity ()));
Es mag hässlich sein, aber ich denke, das ist der einzige Weg, es zu tun. Sie können verwenden Ioutils.tostring () von commons-io allerdings ohne Ihren eigenen Code schreiben zu müssen.