जावा में cURL का उपयोग कैसे करें?


92

मैं जावा में नौसिखिया हूं और जावा में कर्ल का उपयोग करना चाहता था। मेरा सवाल क्या है जावा में निर्मित कर्ल है या मुझे जावा के साथ उपयोग करने के लिए इसे किसी भी 3 पार्टी स्रोत से स्थापित करना होगा। यदि हां, तो जावा में कर्ल कैसे स्थापित करें। मैं लंबे समय से गुगली कर रहा था, लेकिन कोई मदद नहीं मिली। आशा है कि कोई भी मेरी मदद कर सकता है।

अग्रिम में धन्यवाद।


@skaffman: अभी तक कुछ भी नहीं। मैं एक PHP प्रोग्रामर हूं जो हाल ही में जावा की कोशिश कर रहा है। इसलिए स्वाभाविक रूप से मैं कर्ल करने के लिए उपयोग किया जाता हूं। इसलिए, एक नौसिखिया के रूप में जावा पर काम करते समय, मेरे मन में यह सवाल उठता है, अभी भी जिज्ञासा से बाहर है लेकिन मुझे यकीन है कि निकट भविष्य में मुझे इसकी आवश्यकता होगी। अगर किसी को जावा में कर्ल का कोई बेहतर विकल्प पता है, तो कृपया साझा भी करें। यह बहुत मददगार होगा। धन्यवाद।
मोशफिकुर


मैं पूछता हूं क्योंकि CURL सामान की एक पूरी गुच्छा करता है, जिनमें से कुछ जावा में अंतर्निहित है, जिनमें से कुछ नहीं है। अधिक विशिष्ट आवश्यकताओं से यहां बहुत मदद मिलेगी।
स्केफमैन 18

जवाबों:


138

आप java.net.URLऔर / या का उपयोग कर सकते हैं 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);
    }
}

इस विषय पर ओरेकल के सरल ट्यूटोरियल को भी देखें । हालांकि यह थोड़ी क्रिया है। कम वर्बोज़ कोड के साथ समाप्त करने के लिए, आप अपाचे HttpClient पर विचार करना चाह सकते हैं इसके बजाय ।

वैसे: यदि आपका अगला प्रश्न "HTML परिणाम को कैसे संसाधित करें?", तो इसका उत्तर है " HTML parser का उपयोग करेंनहींइसके लिए regex का उपयोग न करें। ।"

यह सभी देखें:


@ बालसखा: धन्यवाद। आपके द्वारा दिए गए लिंक से कुछ अध्ययन करना। btw, क्या आप जावा में कर्ल का बेहतर विकल्प जानते हैं, जो कर्ल की तरह ही कार्यक्षमता प्रदान करेगा? एक बार फिर धन्यवाद।
मोशफिकुर

7
जैसा कि उल्लेख किया गया है, HttpClient "बेहतर विकल्प" है। आप वास्तव में सब कुछ के साथ कर सकते हैं URLConnection, आपको अभी तक HTTP स्पेक्स को जानना और समझना है। वैसे, PHP की जावा से तुलना करने की कोशिश न करें। यह सेब और संतरे की तरह है। आत्म-परेशानियों / भ्रम से बचने के लिए, बल्कि PHP के बारे में भूल जाएं और जावा पर एक नया दृष्टिकोण डालें। यह पूरी तरह से अलग विचारधारा वाली भाषा है। पुनश्च: मैं दोनों करता हूं, इसलिए मैं अनुभव से बताता हूं।
बालुसक

जैसा कि इस और अन्य लोगों ने HttpClient के उपयोग का उल्लेख किया है। मैं वास्तव में libcurl का उपयोग करने से बचने की सलाह दूंगा, आपको यह सुनिश्चित करना होगा कि आप हर प्लेटफॉर्म के लिए देशी लाइब्रेरी को बंडल करें जिसे आप समर्थन करना चाहते हैं और जल्द ही या बाद में किसी को शिकायत होगी कि यह उनके पुराने पावर मैक या SGI वर्कस्टेशन पर काम नहीं करता है।
विक्की

आपको नहीं लगता, पकड़ने वाला ब्लॉक हमेशा कोशिश ब्लॉक के साथ अच्छा लगता है: डी
मुहम्मद सुलेमान

आह… अब मैं समझ गया। आप इस प्रकार के कोड का उपयोग कर सकते हैं, जहां हमें नेस्टेड प्रयास / कैच की आवश्यकता होगी। माफ कीजिएगा यह मेरी गलती है!
मुहम्मद सुलेमान

5

कुछ लोगों ने पहले ही HttpURLConnection का उल्लेख किया है , URL और URLConnection का । यदि आपको सभी नियंत्रण और अतिरिक्त सुविधाओं की आवश्यकता है जो कर्ल लाइब्रेरी आपको (और अधिक) प्रदान करती है, तो मैं अपाचे के httpclient की सिफारिश करूंगा ।


4

रनटाइम वस्तु आप जावा से बाहरी कमांड लाइन आवेदन पत्र पर अमल करने की अनुमति देता है और इसलिए आप तथापि cURL उपयोग करने के लिए के रूप में अन्य उत्तर से संकेत मिलता है वहाँ शायद तुम क्या करने की कोशिश कर रहे क्या करना एक बेहतर तरीका है की अनुमति होगी। यदि आप सभी एक फ़ाइल डाउनलोड करना चाहते हैं तो URL ऑब्जेक्ट बहुत अच्छा काम करेगा।


3

मानक जावा लिब का उपयोग करते हुए, मैं सुझाव देता हूं कि HttpUrlConnection class http://java.sun.com/javase/6/docs/api/java/net/HttpURLConnection.html देख रहा हूं

यह कनेक्शन स्थापित करने के साथ कर्ल क्या कर सकता है इसका अधिकांश भाग संभाल सकता है। आप धारा के साथ जो करते हैं वह आपके ऊपर है।


3

कर्ल एक गैर-जावा प्रोग्राम है और इसे आपके जावा प्रोग्राम के बाहर उपलब्ध कराया जाना चाहिए।

आप जकार्ता कॉमन्स नेट का उपयोग करके आसानी से बहुत अधिक कार्यक्षमता प्राप्त कर सकते हैं , जब तक कि कुछ विशिष्ट कार्यक्षमता जैसे "फिर से शुरू स्थानांतरण" की आपको आवश्यकता नहीं है (जो अपने आप में कोड करने के लिए थकाऊ है)


एक अच्छा है, लेकिन कॉमन्स नेट कर्ल की तुलना में थोड़ा (बहुत अधिक) जाता है।
बालुसक

2

कर्ल को कॉल करने के लिए रनटाइम का उपयोग करें। यह कोड उबंटू और विंडोज दोनों के लिए काम करता है।

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);
}
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.