Java'da cURL nasıl kullanılır?


92

Java'da acemiyim ve curl'yi java'da kullanmak istedim. Sorum şu: curl yerleşik java veya Java ile kullanmak için herhangi bir 3. taraf kaynaktan yüklemem gerekiyor. Eğer öyleyse, java'da curl nasıl kurulur. Uzun zamandır googling yapıyorum ama herhangi bir yardım bulamadım. Umarım kimse bana yardım edebilir.

Şimdiden teşekkürler.


@skaffman: Henüz bir şey yok. Ben son zamanlarda java deneyen bir PHP Programcısıyım. Bu yüzden doğal olarak kıvrılmaya çok alıştım. Yani, acemi olarak java üzerinde çalışırken, bu soru hala meraktan aklıma geliyor ama eminim yakın gelecekte buna ihtiyacım olacak. Java'da curl'nin daha iyi bir alternatifini bilen varsa, lütfen paylaşın. Çok çok yardımcı olacak. Teşekkürler.
moshfiqur


Diye soruyorum çünkü CURL, bazıları Java'da yerleşik olan, bazıları olmayan bir sürü şey yapıyor. Daha spesifik gereksinimler burada çok yardımcı olacaktır.
skaffman

Yanıtlar:


138

Sen yararlanabilir java.net.URLve / veya 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);
    }
}

Ayrıca Oracle'ın konuyla ilgili basit öğreticisine bakın . Ancak biraz ayrıntılı. Daha az ayrıntılı kod elde etmek için bunun yerine Apache HttpClient'i düşünebilirsiniz .

Bu arada: Bir sonraki sorunuz "HTML sonucu nasıl işlenir?" İse, yanıt " Bir HTML ayrıştırıcı kullanın . Hayır, bunun için normal ifade kullanmayın ."

Ayrıca bakınız:


@BalusC: Teşekkürler. Sağladığınız bağlantılardan bazı çalışmalar yapmak. btw, curl gibi aynı işlevselliği sağlayacak, java'da curl'den daha iyi bir alternatif biliyor musunuz? Tekrar teşekkürler.
moshfiqur

7
Belirtildiği gibi, HttpClient "daha iyi bir alternatiftir". Aslında ile her şeyi yapabilirsiniz URLConnection, ancak HTTP özelliklerini bilmeniz ve anlamanız gerekir. Bu arada, PHP'yi Java ile karşılaştırmaya çalışmayın. Elma ve portakal gibi. Kendi kendine sorunlardan / kafa karışıklıklarından kaçınmak için PHP'yi unutun ve Java'ya yeni bir bakış açısı getirin. Tamamen farklı bir ideolojiye sahip bir dil. Not: İkisini de yapıyorum, bu yüzden deneyimlerime dayanarak söylüyorum.
BalusC

Bu ve diğer insanların bahsettiği gibi HttpClient kullanın. Libcurl kullanmaktan kaçınmanızı gerçekten tavsiye ederim, desteklemek istediğiniz her platform için yerel kitaplığı bir araya getirdiğinizden emin olmalısınız ve er ya da geç birisi eski güç maclarında veya SGI iş istasyonlarında çalışmadığından şikayet edecek.
vickirk

sence de, catch bloğu try bloğu ile her zaman güzel görünür: D
Muhammad Suleman

Ahh ... şimdi anladım. iç içe geçmiş deneme / yakalamaya ihtiyacımız olan bu tür kodu kullanabilirsiniz. Üzgünüm, benim hatam!
Muhammed Suleman


4

Süre nesnesi Java harici komut satırı uygulamaları çalıştırmak için izin verir ve bu nedenle diğer cevaplar yapmaya çalışıyorsun ne yapacağını daha iyi bir yol muhtemelen var olduğunu gösterir gibi ancak cURL kullanmak için izin verecek. Tek yapmak istediğiniz bir dosya indirmekse, URL nesnesi harika çalışacaktır.



3

Curl, java dışı bir programdır ve Java programınızın dışında sağlanmalıdır.

İhtiyacınız olan "aktarımı sürdürme" gibi belirli bir işlev olmadığı sürece (kendi başınıza kodlamak zahmetli), Jakarta Commons Net'i kullanarak işlevselliğin çoğunu kolayca elde edebilirsiniz


Güzel, ama Commons Net curl'den biraz (çok fazla) daha ileri gider.
BalusC

2

Curl'ü çağırmak için Runtime'ı kullanın . Bu kod hem Ubuntu hem de Windows için çalışır.

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);
}
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.