2010-06-21 9 views
7

SimpleHttpConnectionManager गलत तरीके से उपयोग किया जा रहा है। सुनिश्चित करें कि HttpMethod.releaseConnection() को हमेशा कॉल किया जाता है और एक समय में केवल एक थ्रेड और/या विधि इस कनेक्शन प्रबंधक का उपयोग कर रही है।SimpleHttpConnectionManager का गलत इस्तेमाल किया जा रहा है

किसी को भी पता है क्यों इस त्रुटि पता चलता है और है का कारण बनता है फ़ाइलें मैं डाउनलोड करने के लिए या असफल और पुनः प्रयास करें या अपूर्ण

धन्यवाद डाउनलोड करने के लिए चाहता है!

+2

अधिक कोड/अपवाद का पता लगाने के लिए हमें आपकी समस्या को बेहतर ढंग से समझने में मदद मिलेगी। –

उत्तर

11

सुनिश्चित करें कि आप कई धागे से कनेक्शन बनाने और उपयोग करने के लिए SimpleHttpConnectionManager का उपयोग नहीं करते हैं। सरल कनेक्शन प्रबंधक इसके लिए डिज़ाइन नहीं किया गया है - यह हमेशा एक ही कनेक्शन देता है, और यह थ्रेड सुरक्षित नहीं है।

एक बहु थ्रेडेड वातावरण में, कनेक्शन के पूल का उपयोग करने वाले एक अलग प्रबंधक का उपयोग करें। MultiThreadedHttpConnectionManager देखें।

+1

धन्यवाद कोड इसे एक डिफ़ॉल्ट httpclient दे रहा था, जो डिफ़ॉल्ट सरल HTTP कनेक्शन के साथ आता है, इसलिए मैंने इसे बदल दिया और इसे multithreadedhhttpconnectionmanager लेने के लिए मजबूर कर दिया। – MArio

0

क्या कोई यह जानता है कि यह त्रुटि क्यों दिखाई देती है और उन फाइलों का कारण बनती है जिन्हें मैं डाउनलोड करना चाहता हूं या विफल होना और पुनः प्रयास करना या अपूर्ण डाउनलोड करना है?

संभवतः डाउनलोड करने की कोशिश कर रहे एप्लिकेशन में एक बग। लेकिन कुछ और संदर्भ के बिना (उदा। स्रोत कोड, स्टैक निशान) हम वास्तविक बग क्या है यह जानने के लिए अनुमान लगाने के साथ ही "टूल" के रूप में अनुमान लगाएंगे।

3

इसके लिए कोई क्रेडिट नहीं लेना पसंद करते हैं, लेकिन आइल श्नाइडर के उत्तर के अनुसार, Vincent de Villers excellent blog में मल्टी थ्रेड किए गए एचटीपीकनेक्शन मैनेजर का उपयोग करने के बारे में अधिक जानकारी प्राप्त करें।

कोड की नकल की स्निपेट लिंक मामले में कभी गायब हो जाता है:

HttpClient httpclient = new HttpClient(new MultiThreadedHttpConnectionManager()); 
GetMethod httpget = new GetMethod("http://www.myhost.com/"); 
try { 
    httpclient.executeMethod(httpget); 
    Reader reader = new InputStreamReader(
     httpget.getResponseBodyAsStream(), httpget.getResponseCharSet()); 
    // consume the response entity 
} finally { 
    httpget.releaseConnection(); 
} 
+0

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

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