2010-03-16 9 views
14

से कई अनुरोध जावा के साथ एक HttpURLConnection में मैं कई अनुरोध कैसे कर सकता हूं?एक HttpURLConnection

URL url = new URL("http://my.com"); 
HttpURLConnection connection = (HttpURLConnection)url.openConnection(); 
HttpURLConnection.setFollowRedirects(true); 
connection.setDoOutput(true); 
connection.setRequestMethod("GET"); 

PrintStream ps = new PrintStream(connection.getOutputStream()); 
ps.print(params); 
ps.close(); 
connection.connect(); 
//TODO: do next request with other url, but in same connection 

धन्यवाद।

उत्तर

15

जावाडोक से:

प्रत्येक HttpURLConnection उदाहरण एक ही अनुरोध बनाने के लिए प्रयोग किया जाता है।

वस्तु स्पष्ट रूप से पुन: उपयोग करने के लिए नहीं है।

थोड़ी मेमोरी थ्रैशिंग और अक्षमता के अलावा, आपके द्वारा किए जाने वाले प्रत्येक अनुरोध के लिए एक HttpURLConnection खोलने में कोई बड़ी समस्या नहीं है। यदि आप बड़े पैमाने पर कुशल नेटवर्क आईओ चाहते हैं, तो आप Apache HttpClient जैसी विशेष लाइब्रेरी का उपयोग कर बेहतर हैं।

+2

मैं वही बात कहने वाला था, इसके बारे में इसका पुन: उपयोग नहीं किया जा रहा है –

+0

एक +1 है, तो! आम तौर पर मैं अपने उत्तरों पर इतनी देर तक परेशान हूं कि हर कोई मुझे इसके साथ मारता है। :) –

+0

@CarlSmotricz सच हो सकता है, ... लेकिन मेरे मामले में मुझे कई अनुरोध मिल रहे हैं, बिना किसी प्राप्त/पोस्ट पैरामीटर + 1 के पैरामीटर के साथ, .... मैंने केवल httpconnection के लिए सरल कोड का उपयोग किया है। http://stackoverflow.com/questions/23017813/httpurlconnection-lots-of-requests – Bhuro

3

सही उत्तर से परे, शायद आप जो चाहते हैं वह अंतर्निहित टीसीपी कनेक्शन, उर्फ ​​"लगातार कनेक्शन" का पुन: उपयोग है, जो वास्तव में जेडीके के HttpURLConnection द्वारा समर्थित हैं। इसलिए आपको उस कारण से अन्य http libs का उपयोग करने की आवश्यकता नहीं है; यद्यपि अन्य वैध कारण हैं, संभवतः प्रदर्शन (लेकिन जरूरी नहीं, उपयोग के मामले, पुस्तकालय पर निर्भर करता है)।

+0

धन्यवाद, लेकिन मैंने इसे पहले से ही कुछ तीसरे भाग पुस्तकालय के साथ किया है। –

+0

@StaxMan, मुझे खेद है, लेकिन क्या आप HttpURLConnection के साथ "लगातार कनेक्शन" को लागू करने का कोई उदाहरण दे सकते हैं? शायद कोई लिंक या कोड स्निपेट? – Ksenia

+1

@ केसेनिया वहाँ करने के लिए कुछ भी नहीं है - यह स्वचालित रूप से उपयोग किया जाता है। यह पारदर्शी है; नया टीसीपी कनेक्शन केवल तभी खोला जाता है जब आवश्यक हो; मौजूदा समय कुछ समय के लिए खुला रहता है (30 सेकंड? कुछ जेडीके डिफ़ॉल्ट है), अगर बहुत लंबे समय तक निष्क्रिय हो तो बंद हो जाता है। तो आपका LOGICAL http अनुरोध/प्रतिक्रिया जोड़ी एक ही PHYSICAL TCP कनेक्शन का उपयोग पहले, पूर्ण http अनुरोध/प्रतिक्रिया के रूप में कर सकती है। – StaxMan

संबंधित मुद्दे