Ich versuche, Javas Äquivalent zu Groovys zu finden:
String content = "http://www.google.com".toURL().getText();
Ich möchte Inhalte von einer URL in eine Zeichenfolge lesen. Ich möchte meinen Code für eine so einfache Aufgabe nicht mit gepufferten Streams und Loops verschmutzen. Ich habe mir den HttpClient von Apache angesehen, sehe aber auch keine ein- oder zweizeilige Implementierung.
Antworten:
Nachdem einige Zeit vergangen ist, seit die ursprüngliche Antwort akzeptiert wurde, gibt es einen besseren Ansatz:
Wenn Sie eine etwas umfassendere Implementierung wünschen, bei der es sich nicht um eine einzelne Zeile handelt, gehen Sie folgendermaßen vor:
quelle
Scanner#close()
später anrufen müssen .String result = scanner.hasNext() ? scanner.next() : "";
damit umgehen.Diese Antwort bezieht sich auf eine ältere Version von Java. Vielleicht möchten Sie sich die Antwort von ccleve ansehen.
Hier ist der traditionelle Weg, dies zu tun:
Wie @extraneon vorgeschlagen hat, können Sie dies mit ioutils auf eine sehr beredte Weise tun, die immer noch im Java-Geist ist:
quelle
getText
, um beispielsweise eine URL-Zeichenfolge als Parameter zu übergeben und einen Einzeiler zu haben:String content = URLConnectionReader.getText("http://www.yahoo.com/");
Oder verwenden Sie einfach Apache Commons
IOUtils.toString(URL url)
oder die Variante, die auch einen Codierungsparameter akzeptiert.quelle
IOUtils.toString(URL)
veraltet ist.IOUtils.toString(URL url, String encoding)
Ist bevorzugt.IOUtils.toString(url, (Charset) null)
um ein ähnliches Ergebnis zu erzielen.Nachdem mehr Zeit vergangen ist, können Sie dies in Java 8 folgendermaßen tun:
quelle
http://www.worldcat.org/webservices/catalog/search/opensearch
ich dieses Beispiel im Webservice verwende, erhalte ich nur die ersten beiden Zeilen von XML.Ab Java 9 gibt es einen noch besseren Weg:
Wie im ursprünglichen groovigen Beispiel wird davon ausgegangen, dass der Inhalt UTF-8-codiert ist. (Wenn Sie etwas Klügeres benötigen, müssen Sie eine URLConnection erstellen und diese verwenden, um die Codierung herauszufinden.)
quelle
getClass().getResourceAsStream(...)
zum Öffnen von Textdateien im Glas verwendet werden.Zusätzliches Beispiel mit Guava:
quelle
Wenn Sie den Eingabestream haben (siehe Joes Antwort), berücksichtigen Sie auch ioutils.toString (Eingabestream).
http://commons.apache.org/io/api-1.4/org/apache/commons/io/IOUtils.html#toString(java.io.InputStream )
quelle
Das Folgende funktioniert mit Java 7/8, sicheren URLs und zeigt, wie Sie Ihrer Anfrage auch ein Cookie hinzufügen können. Beachten Sie, dass dies meistens eine direkte Kopie dieser anderen großartigen Antwort auf dieser Seite ist , aber das Cookie-Beispiel hinzugefügt und klargestellt wurde, dass es auch mit sicheren URLs funktioniert ;-)
Wenn Sie eine Verbindung zu einem Server mit einem ungültigen Zertifikat oder einem selbstsignierten Zertifikat herstellen müssen, werden Sicherheitsfehler ausgegeben, sofern Sie das Zertifikat nicht importieren. Wenn Sie diese Funktionalität benötigen, können Sie den in dieser Antwort auf diese verwandte Frage zu StackOverflow beschriebenen Ansatz in Betracht ziehen .
Beispiel
Ausgänge
Code
quelle
Hier ist Jeannes schöne Antwort, aber für Muppets wie mich eine ordentliche Funktion:
quelle
URL zu String in reinem Java
Beispielaufruf
Implementierung
Sie können die in dieser Antwort beschriebene Methode unter Lesen der URL zu einem InputStream verwenden und mit dieser Antwort unter Lesen der Eingabe von InputStream in String kombinieren .
Das Ergebnis wird so etwas wie sein
Vorteile
Es ist reines Java
Es kann leicht erweitert werden, indem verschiedene Header hinzugefügt werden (anstatt ein Nullobjekt zu übergeben, wie im obigen Beispiel), Authentifizierung usw.
Die Handhabung von Protokollschaltern wird unterstützt
quelle