2012-05-22 13 views
7

मैं http अनुरोध करने के लिए HttpURLConnection क्लास का उपयोग कर रहा हूं। मेरे कोड इस-HttpURLConnection.getInputStream() ब्लॉक

while(true){ 
    try{ 
     connection=(HttpURLConnection)url.openConnection(); 
     connection.setDoOutput(true); 
     connection.setConnectTimeout(2*1000); 
     InputStream in=connection.getInputStream(); 
    } 
    catch(SocketTimeOutException e){} 
    catch(IOException e){} 
} 

मैं डेटा पर कुछ प्रसंस्करण कर एक बार मैं InputStream वस्तु पुनः प्राप्त करने की तरह कुछ लग रहा है। मेरी समस्या यह है कि यदि मैं कार्यक्रम को काफी देर तक चलाता हूं, तो इनपुटस्ट्रीम ब्लॉक प्राप्त करने के लिए कॉल और मैं इसे कभी नहीं मिला।

क्या मुझे कुछ याद आ रही है? किसी भी संकेतक या मदद की सराहना की जाएगी। धन्यवाद।

+4

कभी भी इस तरह की चीज़ 'पकड़ें (सॉकेटटाइमऑटएक्सप्शन ई) {} '' (सत्य)' लूप में कभी नहीं करें। यह आपके प्रोग्राम को गहराई से डीबग या रोकना बहुत कठिन बना देगा। – artbristol

+2

@artbristol आप क्या कहने की कोशिश कर रहे हैं ... यह हमारे उत्पादन कोड से है :) –

+2

@artbristol के रूप में करने के अलावा कहता है कि आपने 'connection.setDoOutput (true) 'पर टिप्पणी करने का प्रयास किया है, इसका मतलब है कि यह आपको कॉल करने की उम्मीद कर रहा है 'connection.getOutputStream() 'और एचटीपी बॉडी –

उत्तर

6

कनेक्शन के लिए पढ़ने का समय सेट करें। इसके अलावा, एक बार जब आप उनके साथ काम कर लें तो अंत में ब्लॉक को बंद करें।

+0

धन्यवाद। यह बहुत मदद करता है और भी काम करता है। – Sandman

+0

इसके लिए बहुत बहुत धन्यवाद !!!! – jaisonDavis

1

आपको उन कनेक्शनों को बंद करना चाहिए जिनका उपयोग नहीं किया जाता है। यहां उदाहरण है:

connection = (HttpURLConnection) url.openConnection(); 
connection.setRequestMethod("GET"); 
connection.setDoOutput(true); 
connection.setReadTimeout(2*1000); 
connection.connect(); 
reader = new BufferedReader(new InputStreamReader(connection.getInputStream())); 
stringBuilder = new StringBuilder(); 
String line = null; 
while ((line = reader.readLine()) != null) 
{ 
stringBuilder.append(line + "\n"); 
} 
String result = stringBuilder.toString(); 
reader.close(); 
+0

आपकी प्रतिक्रिया के लिए बहुत बहुत धन्यवाद। कनेक्शन पर पढ़ने का समय निर्धारित करना इसे ठीक करना प्रतीत होता था! आपकी मदद की बहुत सराहना करते हैं। – Sandman

+0

setDoOutput (true) के साथ मिलकर अच्छी तरह से काम नहीं करता है। – zgulser