के लिए असीमित HTTP क्लाइंट जावा दुनिया में एक सापेक्ष नौसिखिया के रूप में, मुझे कई चीजों को निराशाजनक रूप से पूरा करने में लग रहा है जो कई अन्य ढांचे में अपेक्षाकृत तुच्छ हैं। एक प्राथमिक उदाहरण एसिंक्रोनस http अनुरोधों के लिए एक सरल समाधान है। एक के रूप में देखकर पहले से मौजूद प्रतीत नहीं होता है, सबसे अच्छा तरीका क्या है? एक ब्लॉकिंग प्रकार lib का उपयोग करके अपने स्वयं के थ्रेड बनाकर httpclient या अंतर्निर्मित जावा http सामग्री की तरह, या क्या मुझे नई गैर-अवरुद्ध आईओ जावा सामग्री का उपयोग करना चाहिए - यह विशेष रूप से जटिल है जो सरल होना चाहिए।जावा
जो मैं खोज रहा हूं वह डेवलपर बिंदु दृश्य से उपयोग करना आसान है - AS3 में URLLoader के समान कुछ - जहां आप बस URLRequest बनाते हैं - समापन, त्रुटियों, प्रगति को संभालने के लिए ईवेंट हैंडलर का एक समूह संलग्न करें, आदि, और इसे आग लगाने के लिए एक विधि बुलाओ।
आप AS3 में URLLoader से परिचित नहीं हैं, तो इस तरह इसकी तो सुपर आसान और लग रहा है कुछ:
private void getURL(String url)
{
URLLoader loader = new URLLoader();
loader.addEventListener(Event.Complete, completeHandler);
loader.addEventListener(HTTPStatusEvent.HTTP_STATUS, httpStatusHandler);
loader.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler);
URLRequest request = new URLRequest(url);
// fire it off - this is asynchronous so we handle
// completion with event handlers
loader.load(request);
}
private void completeHandler(Event event)
{
URLLoader loader = (URLLoader)event.target;
Object results = loader.data;
// process results
}
private void httpStatusHandler(Event event)
{
// check status code
}
private void ioErrorHandler(Event event)
{
// handle errors
}
पूरी तरह से अलग निकस समझते हैं। हालांकि, इस उदाहरण में, हम क्लाइंट यूआई फ्रेमवर्क के रूप में जावा का उपयोग कर रहे हैं और प्रस्तुत किए जाने वाले बहुत सारे डेटा बाहरी वेब सेवाओं से आ रहे हैं। – helifreak
असल में कई एसिंक http क्लाइंट हैं, जो अन्य उत्तरों में सूचीबद्ध हैं (जेटी के पास वर्षों से एक है, जकार्ता एचसी काफी समय भी है; निंग का एसिंक http क्लाइंट नवीनतम और सक्रिय रूप से विकसित है)। वे सिर्फ इतना ध्यान नहीं मिला है कि वे लायक हैं। – StaxMan