我几天来遇到一个问题,我知道如何设置 header 拦截器,问题是,如何仅在登录后设置 header 拦截器,因为我的流程是:
无需身份验证只需用户名和密码即可登录
然后服务器返回承载 token
如何自动设置 header 身份验证,而不是在每次调用改造时手动添加?有什么办法吗? 我必须使用相同的 Retrofit 实例吗?
最佳答案
您可以通过制作自定义拦截器来做到这一点,下面是代码
class AuthorizationInterceptor(var context: Context) : Interceptor {
override fun intercept(chain: Interceptor.Chain): Response {
var request: Request = chain.request()
val sessionId = "Your Session Id"
if (tempSessionId != null) {
request = request.newBuilder()
.addHeader("Authorization", "Bearer $tempSessionId").build()
}
return chain.proceed(request)
}
}
然后通过以下方式添加这个拦截器
class RetrofitInstance(var context: Context) {
private val BASE_URL = APIVersionConstants.BASE_URL
private val builder = Retrofit.Builder()
.baseUrl(BASE_URL)
.addConverterFactory(GsonConverterFactory.create())
.client(makeOkHttpClient())
private fun makeOkHttpClient(): OkHttpClient {
return OkHttpClient.Builder()
.addInterceptor(AuthorizationInterceptor(context)) //<----HERE
.build()
}
private val retrofit = builder.build()
fun <T> buildService(serviceType: Class<T>): T {
return retrofit.create(serviceType)
}
}
已经完成了
关于java - 登录后添加 header 拦截器 - Retrofit,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60698260/