Я столкнулся с проблемой SharedPreferences.Я хотел бы знать, как я могу вызвать SharedPreferences внутри Retrofit.Я имею в виду, у меня есть следующий файл:
@Module
class NetworkModule {
@Provides
internal fun provideGson(): Gson {
return GsonBuilder().create()
}
@Provides
internal fun provideOkHttpClient(): OkHttpClient {
return OkHttpClient.Builder().addInterceptor { chain ->
val original = chain.request()
val requestBuilder = original.newBuilder().addHeader("Accept", "application/json")
val request = requestBuilder.method(original.method(), original.body()).build()
chain.proceed(request)
}.build()
}
@Provides
internal fun provideRetrofit(gson: Gson, okHttpClient: OkHttpClient): Retrofit {
return Retrofit.Builder()
.addConverterFactory(GsonConverterFactory.create(gson))
.addCallAdapterFactory(RxJava2CallAdapterFactory.create())
.baseUrl(BASE_URL)
.client(okHttpClient)
.build()
}
}
И в моем Presenter у меня есть следующий код:
override fun getSavedToken() {
mToken = mSharedPreferences.getString(TOKEN, TOKEN_UNAVAILABLE)
}
...
inner class GetAccessTokenSubscriber : ResourceObserver<AccessTokenBean>() {
override fun onNext(@NonNull accessToken: AccessTokenBean) {
mSharedPreferences.edit().putString(TOKEN, accessToken.token).apply()
getInformation()
}
override fun onError(@NonNull e: Throwable) {
mView?.displayError()
}
override fun onComplete() {
// Nothing to do
}
}
В настоящее время, чтобы установить токен, я поставил токен Bearer $в моем репозитории / сервисе
// Repository
val newToken = "Bearer $token"
return mService.getInfos(newToken)
// Service
fun getInfos(@Header("Authorization") token: String
Я хотел бы знать, как я могу поместить токен Bearer + в мой файл NetworkModule?
Спасибо за ваше время.