Bagaimana cara menggunakan cURL di Java?

92

Saya seorang pemula di java dan ingin menggunakan curl di java. Apa pertanyaan saya adalah curl built-in di java atau saya harus menginstalnya dari sumber pihak ketiga untuk digunakan dengan Java. Jika demikian, bagaimana cara menginstal curl di java. Saya telah googling untuk waktu yang lama tetapi tidak menemukan bantuan. Semoga ada yang bisa membantu saya di luar sana.

Terima kasih sebelumnya.

moshfiqur.dll
sumber
@skaffman: Belum ada. Saya seorang Programmer PHP yang baru-baru ini mencoba java. Jadi secara alami saya sangat terbiasa dengan ikal. Jadi, saat bekerja di java sebagai pemula, pertanyaan ini muncul di benak saya, masih penasaran tapi saya yakin dalam waktu dekat saya akan membutuhkannya. Jika ada yang tahu alternatif curl yang lebih baik di java, silakan juga berbagi. Ini akan sangat membantu. Terima kasih.
moshfiqur
1
Sangat dekat dengan stackoverflow.com/questions/116650/curl-equivalent-in-java
Pascal Thivent
Saya bertanya karena CURL melakukan banyak hal, beberapa di antaranya terintegrasi dengan Java, beberapa di antaranya tidak. Persyaratan yang lebih spesifik akan banyak membantu di sini.
Skaffman

Jawaban:

138

Anda dapat memanfaatkan java.net.URLdan / atau java.net.URLConnection.

URL url = new URL("https://stackoverflow.com");

try (BufferedReader reader = new BufferedReader(new InputStreamReader(url.openStream(), "UTF-8"))) {
    for (String line; (line = reader.readLine()) != null;) {
        System.out.println(line);
    }
}

Juga lihat tutorial sederhana Oracle tentang masalah ini. Namun itu agak bertele-tele. Untuk mendapatkan kode yang lebih sedikit, Anda mungkin ingin mempertimbangkan Apache HttpClient sebagai gantinya.

Ngomong-ngomong: jika pertanyaan Anda berikutnya adalah "Bagaimana cara memproses hasil HTML?", Maka jawabannya adalah " Gunakan parser HTML . Tidak, jangan gunakan regex untuk ini .".

Lihat juga:

BalusC
sumber
@BalusC: Terima kasih. Melakukan beberapa studi dari tautan yang Anda berikan. btw, apakah Anda tahu alternatif yang lebih baik dari curl di java, yang akan memberikan fungsi yang sama seperti curl? Terima kasih lagi.
moshfiqur
7
Seperti disebutkan, HttpClient adalah "alternatif yang lebih baik". Anda sebenarnya dapat melakukan semuanya dengan URLConnection, Anda belum mengetahui dan memahami spesifikasi HTTP. Omong-omong, jangan coba membandingkan PHP dengan Java. Ini seperti apel dan jeruk. Untuk menghindari masalah diri / kebingungan, lebih baik lupakan PHP dan berikan tampilan baru di Java. Ini adalah bahasa dengan ideologi yang sama sekali berbeda. PS: Saya melakukan keduanya, jadi saya ceritakan dari pengalaman.
BalusC
Karena ini dan orang lain telah menyebutkan, gunakan HttpClient. Saya sangat merekomendasikan untuk menghindari penggunaan libcurl, Anda harus memastikan Anda menggabungkan pustaka asli untuk setiap platform yang ingin Anda dukung dan cepat atau lambat seseorang akan mengeluh bahwa itu tidak berfungsi pada power mac atau SGI workstation mereka yang lama.
vickirk
Tidakkah menurutmu, blok tangkap selalu terlihat bagus dengan blok percobaan: D
Muhammad Suleman
Ahh ... sekarang aku mengerti. Anda dapat menggunakan jenis kode ini di mana kita perlu mencoba / menangkap bersarang. maaf kesalahanku!
Muhammad Suleman
5

Beberapa orang telah menyebutkan HttpURLConnection , URL dan URLConnection . Jika Anda memerlukan semua kontrol dan fitur tambahan yang disediakan oleh perpustakaan curl (dan lebih banyak lagi), saya akan merekomendasikan httpclient Apache .

Seth
sumber
4

The Runtime objek memungkinkan Anda untuk menjalankan aplikasi baris perintah eksternal dari Jawa dan karena itu akan memungkinkan Anda untuk menggunakan cURL namun sebagai jawaban lain menunjukkan mungkin ada cara yang lebih baik untuk melakukan apa yang Anda coba lakukan. Jika yang ingin Anda lakukan hanyalah mengunduh file, objek URL akan berfungsi dengan baik.

mjh2007
sumber
3

Curl adalah program non-java dan harus disediakan di luar program Java Anda.

Anda dapat dengan mudah mendapatkan banyak fungsi menggunakan Jakarta Commons Net , kecuali jika ada fungsi khusus seperti "melanjutkan transfer" yang Anda perlukan (yang membosankan untuk membuat kode sendiri)

Thorbjørn Ravn Andersen
sumber
Bagus, tapi Commons Net melangkah lebih jauh (terlalu banyak) dari pada curl.
BalusC
2

Gunakan Runtime untuk memanggil Curl. Kode ini berfungsi untuk Ubuntu dan Windows.

String[] commands = new String {"curl", "-X", "GET", "http://checkip.amazonaws.com"};
Process process = Runtime.getRuntime().exec(commands);
BufferedReader reader = new BufferedReader(new 
InputStreamReader(process.getInputStream()));
String line;
String response;
while ((line = reader.readLine()) != null) {
    response.append(line);
}
ariane26
sumber