Saya mencoba mencari padanan Java dengan Groovy:
String content = "http://www.google.com".toURL().getText();
Saya ingin membaca konten dari URL menjadi string. Saya tidak ingin mencemari kode saya dengan aliran buffer dan loop untuk tugas sederhana. Saya melihat ke HttpClient apache tetapi saya juga tidak melihat implementasi satu atau dua baris.
Jawaban:
Sekarang beberapa waktu telah berlalu sejak jawaban asli diterima, ada pendekatan yang lebih baik:
Jika Anda ingin implementasi yang sedikit lebih penuh, yang bukan satu baris, lakukan ini:
sumber
Scanner#close()
nanti.String result = scanner.hasNext() ? scanner.next() : "";
mengatasinya.Jawaban ini merujuk pada versi Java yang lebih lama. Anda mungkin ingin melihat jawaban ccleve.
Inilah cara tradisional untuk melakukan ini:
Seperti yang disarankan @extraneon , ioutils memungkinkan Anda melakukan ini dengan cara yang sangat fasih yang masih dalam semangat Java:
sumber
getText
, meneruskan URL string sebagai parameter dan memiliki satu-liner:String content = URLConnectionReader.getText("http://www.yahoo.com/");
Atau cukup gunakan Apache Commons
IOUtils.toString(URL url)
, atau varian yang juga menerima parameter penyandian.sumber
IOUtils.toString(URL)
sudah usang.IOUtils.toString(URL url, String encoding)
lebih disukai.IOUtils.toString(url, (Charset) null)
untuk mencapai hasil yang serupa.Sekarang setelah waktu berlalu, inilah cara untuk melakukannya di Java 8:
sumber
http://www.worldcat.org/webservices/catalog/search/opensearch
web, saya hanya mendapatkan dua baris pertama xml.Ada cara yang lebih baik untuk Java 9:
Seperti contoh asyik asli, ini mengasumsikan bahwa konten tersebut dikodekan UTF-8. (Jika Anda membutuhkan sesuatu yang lebih pintar dari itu, Anda perlu membuat koneksi URLC dan menggunakannya untuk mengetahui pengkodean.)
sumber
getClass().getResourceAsStream(...)
untuk membuka file teks di dalam toples.Contoh tambahan menggunakan Jambu:
sumber
Jika Anda memiliki aliran input (lihat jawaban Joe), pertimbangkan juga ioutils.toString (inputstream).
http://commons.apache.org/io/api-1.4/org/apache/commons/io/IOUtils.html#toString(java.io.InputStream )
sumber
Berikut ini berfungsi dengan Java 7/8, url aman, dan menunjukkan cara menambahkan cookie ke permintaan Anda juga. Perhatikan ini sebagian besar merupakan salinan langsung dari jawaban hebat lainnya di halaman ini , tetapi menambahkan contoh cookie, dan klarifikasi bahwa ini bekerja dengan url aman juga ;-)
Jika Anda perlu terhubung ke server dengan sertifikat yang tidak sah atau sertifikat yang ditandatangani sendiri, ini akan menimbulkan kesalahan keamanan kecuali Anda mengimpor sertifikat. Jika Anda memerlukan fungsi ini, Anda dapat mempertimbangkan pendekatan yang dijabarkan dalam jawaban ini untuk ini pertanyaan terkait di StackOverflow.
Contoh
output
Kode
sumber
Inilah jawaban yang bagus dari Jeanne, tetapi dibungkus dengan fungsi rapi untuk muppets seperti saya:
sumber
URL ke String di Jawa murni
Contoh panggilan
Penerapan
Anda dapat menggunakan metode yang dijelaskan dalam jawaban ini, pada Cara membaca URL ke InputStream dan menggabungkannya dengan jawaban ini pada Cara membaca InputStream ke String .
Hasilnya akan seperti
Pro
Ini adalah java murni
Itu dapat dengan mudah ditingkatkan dengan menambahkan header yang berbeda (alih-alih melewati objek nol, seperti contoh di atas), otentikasi, dll.
Penanganan switch protokol didukung
sumber