2013-11-28 13 views
16

मैं http इंटरैक्शन करने के लिए एचटीपी अपाचे घटक का उपयोग कर रहा हूं। मुझे अपने http क्लाइंट को समायोजित करने की आवश्यकता है। इस उद्देश्य के लिए मेरे पास दो पैरामीटर हैं: कनेक्शन टाइमआउट और कनेक्शन अनुरोध टाइमआउट। लाइब्रेरी दस्तावेज़ीकरण और स्रोत कोड में (कोई टिप्पणी नहीं मिली) मुझे इस शर्तों की परिभाषा नहीं मिली। मुझे पता होना चाहिए कि उनका क्या मतलब है। हो सकता है कि उन्हें HTTP प्रोटोकॉल दस्तावेज़ में परिभाषित किया गया हो लेकिन मुझे यह नहीं मिल रहा है। तो, मेरा सवाल यह है कि इन दो शब्दों का क्या अर्थ है और वे एक-दूसरे से अलग कैसे हैं।कनेक्शन और कनेक्शन अनुरोध टाइमआउट

+0

अपाचे और न ही जावा कीवर्ड के बिना उन्हें खोजने का प्रयास करें: http://en.wikipedia.org/wiki/Timeout_(computing) –

उत्तर

19

HttpClienthttp://hc.apache.org/httpclient-3.x/apidocs/org/apache/commons/httpclient/HttpClient.html

Connection timeout के अनुसार कनेक्शन और सॉकेट टाइमआउट (setConnectionTimeout() और setTimeout()) स्थापित करने के लिए एक तरीका है जब तक सर्वर के साथ कनेक्शन स्थापित है टाइमआउट है।

Socket timeout डेटा (सॉकेट टाइमआउट) प्राप्त करने का समय है।

उदाहरण:

के आप एक वेब पेज तक पहुँचने के लिए अपने ब्राउज़र को मान लें। यदि सर्वर एक्स सेकंड में anwser नहीं है, तो एक कनेक्शन टाइमआउट होगा। लेकिन अगर यह कनेक्शन स्थापित करता है, तो सर्वर ब्राउज़र के परिणाम को संसाधित करना शुरू कर देगा। यदि यह वाई सेकेंड में इस प्रसंस्करण को समाप्त नहीं करता है, तो सॉकेट टाइमआउट होगा।

+6

आपके उत्तर के लिए धन्यवाद, लेकिन फिर भी मुझे कोई समस्या है। यहां विन्यास निर्माता का अनुरोध है http://hc.apache.org/httpcomponents-client-4.3.x/httpclient/apidocs/org/apache/http/client/config/RequestConfig.Builder.html और इसमें तीन विधियां सेट हैं कनेक्शनक्यूक्वेटटाइमआउट, सेट कनेक्ट कनेक्ट टाइमआउट , setSocketTimeout (और कोई टिप्पणी नहीं!)। इसलिए मुझे अभी भी पता नहीं है कि प्रत्येक विधि वास्तव में क्या करती है और मुझे किन तरीकों का उपयोग करना चाहिए। – mvb13

+18

ठीक है, मैंने अंततः पाया कि कनेक्शन कनेक्शन से कनेक्शन का अनुरोध करते समय getConnectionRequestTimeout मिलीसेकंड में imeout देता है। मुझे लगता है कि कनेक्शन मैनेजर apache-httpcomponents लाइब्रेरी क्लास है, इसलिए मैं इसका उपयोग नहीं करूंगा। मैं setConnectionTimeout() और setTimeout() का उपयोग करूंगा। – mvb13

4

पोस्टरिटी के लिए, एचटीपी क्लाइंट 4.X.X में, निम्न है कि आप एक ऐसे ग्राहक को कैसे बनाते हैं जो किसी विशेष connectTimeoutMillis और requestTimeoutMillis का उपयोग करता है।

HttpClientBuilder clientBuilder = HttpClientBuilder.create(); 
RequestConfig.Builder requestBuilder = RequestConfig.custom(); 
requestBuilder = requestBuilder.setConnectTimeout(connectTimeoutMillis); 
requestBuilder = requestBuilder.setConnectionRequestTimeout(requestTimeoutMillis); 
clientBuilder.setDefaultRequestConfig(requestBuilder.build()); 
CloseableHttpClient httpClient = clientBuilder.build(); 
... 

बीटीडब्ल्यू, इस कोड के लिए जावाडॉक्स बेकार है। कॉन्फ़िगर बिल्डर का उपयोग कैसे करें हाथ से पता लगाने का प्रयास करें। बकवास।

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