2011-12-29 6 views
6

मैं वर्तमान में उपयोग कर रहा हूँ तक पहुँच जाता है httpclient 4 इस तरह एक दूरस्थ सर्वर के लिए एक पोस्ट अनुरोध बनाने के लिए:समापन HttpClient timout पहले कनेक्शन

HttpResponse response = httpClient.execute(request); 
    InputStream is = response.getEntity().getContent(); 

इसके बारे में एक स्वयं के लिए कॉन्फ़िगर राशि लेता है जब सर्वर पहुंच योग्य नहीं है कनेक्शन से पहले समय वास्तव में बाहर समय। उस पेरीओड के दौरान निष्पादन() एक अवरुद्ध कॉल है।

जो मैं ढूंढ रहा हूं वह प्राकृतिक समय समाप्ति से पहले निष्पादन() को रद्द करने का एक तरीका है ताकि मेरा धागा निष्पादित() को चल रहा हो और अब कृपा से समाप्त न हो जाए।

मैं

request.abort(); 

और

httpClient.getConnectionManager().shutdown(); 

की कोशिश की है लेकिन इन कॉल के दोनों बाधित ना करें निष्पादित()। चल रहे कनेक्शन प्रयास को रद्द करने का कोई और तरीका है?

उत्तर

0

Future में कॉल को लपेटें और get with timeout पर कॉल करें।

+0

आई) को रोकने के लिए अवरुद्ध अमल (किसी भी अब इंतजार नहीं एक तरह से देख रहा हूँ। – Moritz

+0

भविष्य का प्रभाव "ब्लॉक" करेगा लेकिन कॉलिंग थ्रेड एमसीईएस के सटीक माप और फिर "टाइमआउट" के लिए इंतजार कर सकता है और इसके आनंददायक तरीके से जा सकता है। – alphazero

+0

मैं वर्तमान थ्रेड को अवरुद्ध करने से निष्पादित() को रोकने के लिए एक निश्चित मात्रा का इंतजार नहीं करना चाहता हूं। – Moritz

0

मुझे लगता है कि आप जो कुछ भी अधिकतम बार जब आप इन विधियों का उपयोग करना चाहते हैं के लिए connectiontimeout सेट कर सकते हैं: setConnectionTimeout()

setSoTimeout() 
+0

मैंने पहले कनेक्शन टाइमआउट सेट किया है। जिस समस्या का सामना कर रहा हूं वह यह है कि मैं टाइमआउट में आने से पहले निष्पादन() को मैन्युअल रूप से बाधित करना चाहता हूं। – Moritz

+0

क्या आपने इनपुटस्ट्रीम बंद कर दिया है? एक और सवाल है, आपके प्रश्न में 'अनुरोध', क्या इसका अर्थ है एचटीपीजीट/एचटीपीपोस्ट? – kosa

+0

मुझे कोई इनपुट स्ट्रीम नहीं मिली है क्योंकि .execute() सॉकेट टाइमआउट तब तक अवरुद्ध हो रहा है जब सॉकेट एक्सेप्शन फेंक दिया जाता है। मैं जो हासिल करना चाहता हूं वह है सॉकेट टाइमआउट में आने से पहले निष्पादन (और धागा अवरुद्ध किया जा रहा है) को रोकने के लिए है। अनुरोध एक POST अनुरोध है। – Moritz