में अतुल्यकालिक HTTP अनुरोध कैसे इंतजार किए बिना जावा में भेजने के लिए अतुल्यकालिक HTTP GET/पोस्ट अनुरोध/प्रतिक्रिया पढ़ने? मैं नहीं चाहता कि किसी भी तीसरे पक्ष के पुस्तकालयों का उपयोग करना चाहते ..जावा
जावा
उत्तर
पर एक नज़र लेने के लिए आप सब पर प्रतिक्रिया पढ़ने में रुचि नहीं कर रहे हैं चाहते हो सकता है, तो तुम सिर्फ करने के लिए उपयोग कर सकते हैं URL.openStream() एक कनेक्शन बनाएं और फिर सॉकेट को तुरंत बंद करें (या इसे अनदेखा करें और इसे समय दें, अगर आपको सर्वर का मतलब लगता है)। यह सख्ती से असीमित नहीं है, लेकिन यह किसी भी दृष्टिकोण से काफी तेज़ होगा जो सर्वर की प्रतिक्रिया लाने और विश्लेषण करने पर निर्भर करता है।
यह निश्चित रूप से openStream()
कॉल को अन्य थ्रेड पर ऑफ़लोड करके, या तो मैन्युअल रूप से या java.util.concurrent
में उपलब्ध उपयोगिताओं का उपयोग करके अतुल्यकालिक बना दिया जा सकता है।
java.util.concurrent इस्तेमाल किया जा सकता।
आप रुचि रखते तो तीसरे पक्ष के पुस्तकालयों उपयोग कर रहा है आप
वास्तव में ...! धन्यवाद @ संदीप पाठक! : डी – gumuruh
यदि आप जेटी लाइब्रेरी को अपने ऐप में जोड़ना नहीं चाहते हैं तो मैं जेटी एचटीपी क्लाइंट जैसे कुछ का उपयोग करने का सुझाव दूंगा। जेटी के विकी पेज http://wiki.eclipse.org/Jetty/Tutorial/HttpClient से यहां एक अच्छा उदाहरण दिया गया है।
: "प्रेषण() विधि निष्पादन के लिए थ्रेड पूल में एक्सचेंज भेजने के तुरंत बाद लौटती है" - इसलिए, वास्तव में असीमित नहीं है। – kellogs
URL.openConnection() सर्वर पर HTTP अनुरोध नहीं भेज रहा है। यह कोड ** यूआरएल यूआरएल = नया यूआरएल ("http: // localhost /") है; URL कनेक्शन myURLConnection = url.open कनेक्शन(); myURLConnection.connect(); ** और मैंने अपाचे एक्सेस लॉग देखा है और यह अनुरोध नहीं मिल रहा है। – pavan
@ पावन - आह, मेरी गलती, उपयोग करने के लिए एपीआई वास्तव में 'ओपनस्ट्रीम()' है, न कि 'openConnection() '। 'openConnection()' कनेक्शन ऑब्जेक्ट तैयार करता है, लेकिन वास्तव में सर्वर से कनेक्शन स्थापित नहीं करता है। 'ओपनस्ट्रीम()' कनेक्शन स्थापित करता है और इसके साथ जुड़े 'इनपुटस्ट्रीम' को वापस देता है, जिसे आप तब पढ़ने या बंद करने या अनदेखा करने के लिए स्वतंत्र होते हैं। मैं तदनुसार अपना जवाब संपादित करूंगा। उपरोक्त लिंक पर प्रलेखन से – aroth