पर ऑथ हेडर जोड़ना मुझे आश्चर्य है कि क्या डैगर को यह जानने का कोई तरीका है कि नया डेटा उपलब्ध होने पर इसे किसी ऑब्जेक्ट को फिर से बनाना चाहिए।डैगर + रेट्रोफिट। रनटाइम
जिस उदाहरण का मैं बात कर रहा हूं वह अनुरोध हैडर के साथ है जो मेरे पास रेट्रोफिट के लिए है। किसी बिंदु पर (जब उपयोगकर्ता लॉग इन करता है) मुझे एक टोकन मिलता है जिसे मुझे प्रमाणीकृत अनुरोध करने के लिए रेट्रोफिट के शीर्षकों में जोड़ने की आवश्यकता होती है। मुद्दा यह है कि, मुझे रेट्रोफिट के एक ही अनधिकृत संस्करण के साथ छोड़ दिया गया है। यहाँ मेरी इंजेक्शन कोड है:
@Provides
@Singleton
OkHttpClient provideOkHttpClient(Cache cache) {
HttpLoggingInterceptor interceptor = new HttpLoggingInterceptor();
interceptor.setLevel(HttpLoggingInterceptor.Level.BODY);
OkHttpClient client = new OkHttpClient.Builder()
.addInterceptor(interceptor)
.cache(cache).build();
client
.newBuilder()
.addInterceptor(
chain -> {
Request original = chain.request();
Request.Builder requestBuilder = original.newBuilder()
.addHeader("Accept", "Application/JSON");
Request request = requestBuilder.build();
return chain.proceed(request);
}).build();
return client;
}
@Provides
@Singleton
Retrofit provideRetrofit(Gson gson, OkHttpClient okHttpClient) {
Retrofit retrofit = new Retrofit.Builder()
.addConverterFactory(GsonConverterFactory.create(gson))
.addCallAdapterFactory(RxErrorHandlingCallAdapterFactory.create())
.baseUrl(mBaseUrl)
.client(okHttpClient)
.build();
return retrofit;
}
@Provides
@Singleton
public NetworkService providesNetworkService(Retrofit retrofit) {
return retrofit.create(NetworkService.class);
}
यह कैसे काम करने के लिए पर कोई भी विचार?
विकल्प के लिए 1. मैं एक नया रेट्रोफिट उदाहरण कैसे मांगूं? – AIntel
आप है मान लिया जाये कि एक 'FooComponent fooCompomnent',' Retrofit' उदाहरण प्रदान करता है। अब आप उस घटक को 'नल' करते हैं और एक नया 'FooComponent' बनाते हैं। – azizbekian
अपने उत्तर को सही के रूप में चिह्नित करते हुए, क्योंकि मैं समझता हूं और देखता हूं कि आपका समाधान कैसे काम करेगा। मेरे सेटअप के साथ समस्या यह है कि मैं निर्माता को अपने प्रस्तुतकर्ता को रेट्रोफिट इंजेक्ट करता हूं जिसे स्वयं ही मेरे विचार में इंजेक्शन दिया जाता है। और मैं इसे अपने विचारों में करता हूं जिनमें से कुछ अपने स्वयं के घटक हैं जो मेरे नेटवर्क घटक पर निर्भर करते हैं। मैं कुछ जादू समाधान की उम्मीद कर रहा था जो किसी भी तरह से मेरे प्रस्तुतकर्ताओं को मेरे सभी विचारों पर फिर से लागू करने के लिए मजबूर करेगा। – AIntel