आप अंतर्निहित HTTP क्लाइंट पर टाइमआउट सेट कर सकते हैं। यदि आप क्लाइंट निर्दिष्ट नहीं करते हैं, तो रेट्रोफिट डिफ़ॉल्ट कनेक्ट और टाइमआउट पढ़ने के साथ एक बना देगा। अपने स्वयं के टाइमआउट सेट करने के लिए, आपको अपने स्वयं के क्लाइंट को कॉन्फ़िगर करना होगा और इसे आपूर्ति करना होगा RestAdapter.Builder
।
एक विकल्प स्क्वायर से भी OkHttp क्लाइंट का उपयोग करना है ।
1. पुस्तकालय निर्भरता जोड़ें
बिल्ड.ग्रेड में, इस लाइन को शामिल करें:
compile 'com.squareup.okhttp:okhttp:x.x.x'
x.x.x
पुस्तकालय का वांछित संस्करण कहां है।
2. क्लाइंट सेट करें
उदाहरण के लिए, यदि आप 60 सेकंड का समय निर्धारित करना चाहते हैं, तो संस्करण 2 से पहले रिट्रोफिट के लिए और संस्करण 3 से पहले Okhttp पर करें (नए संस्करण के लिए, इस संस्करण को देखें ):
public RestAdapter providesRestAdapter(Gson gson) {
final OkHttpClient okHttpClient = new OkHttpClient();
okHttpClient.setReadTimeout(60, TimeUnit.SECONDS);
okHttpClient.setConnectTimeout(60, TimeUnit.SECONDS);
return new RestAdapter.Builder()
.setEndpoint(BuildConfig.BASE_URL)
.setConverter(new GsonConverter(gson))
.setClient(new OkClient(okHttpClient))
.build();
}
EDIT 1
Okhttp संस्करणों के लिए 3.x.x
, आपको इस तरह निर्भरता निर्धारित करनी होगी:
compile 'com.squareup.okhttp3:okhttp:x.x.x'
और बिल्डर पैटर्न का उपयोग करके क्लाइंट सेट करें:
final OkHttpClient okHttpClient = new OkHttpClient.Builder()
.readTimeout(60, TimeUnit.SECONDS)
.connectTimeout(60, TimeUnit.SECONDS)
.build();
Timeouts में अधिक जानकारी
EDIT 2
चूंकि रिट्रेडिट संस्करण 2.x.x
बिल्डर पैटर्न का भी उपयोग करता है, इसलिए ऊपर दिए गए रिटर्न ब्लॉक को बदल दें:
return new Retrofit.Builder()
.baseUrl(BuildConfig.BASE_URL)
.addConverterFactory(GsonConverterFactory.create())
.client(okHttpClient)
.build();
यदि मेरी providesRestAdapter
विधि जैसे कोड का उपयोग कर रहे हैं , तो विधि वापसी प्रकार को रेट्रोफिट में बदलें ।
रेट्रोफिट 2 में अधिक जानकारी - 1.9 से अपग्रेड गाइड
ps: यदि आपका minSdkVersion 8 से अधिक है, तो आप इसका उपयोग कर सकते हैं TimeUnit.MINUTES
:
okHttpClient.setReadTimeout(1, TimeUnit.MINUTES);
okHttpClient.setConnectTimeout(1, TimeUnit.MINUTES);
इकाइयों के बारे में अधिक जानकारी के लिए, टाइम यूनिट देखें ।