запрос:
Код: Выделить всё
url:http://host/test
method: post
body:{"token":"AAA"}
Код: Выделить всё
{"code":401,"msg":"unauth"}
Код: Выделить всё
url:http://host/test
method: post
body:{"token":"BBB"}
Код: Выделить всё
{"code":200,"msg":"ok"}
Код: Выделить всё
OkHttpClient.Builder()
.writeTimeout(10, TimeUnit.SECONDS)
.readTimeout(10, TimeUnit.SECONDS)
.connectTimeout(10, TimeUnit.SECONDS)
.callTimeout(10, TimeUnit.SECONDS)
.addInterceptor {
val request = it.request()
Log.d(Tags.HTTP, "address: ${request.url}")
val response = it.proceed(request)
response.body?.let { body ->
val bodyString = body.string()
if (bodyString.decodeJson().code == 401) {
response.newBuilder().code(401).message("Not Authorized").build()
} else {
response.newBuilder().body(bodyString.toResponseBody("text/plain".toMediaType())).build()
}
} ?: response
}
.authenticator(object : Authenticator {
override fun authenticate(route: Route?, response: Response): Request? {
Log.d(TAG, "start retry auth")
return response.request.newBuilder().method(request.method,"{\"token\":\"BBB\"".toRequestBody("application/json".toMediaType()))
}
})
.build()
Код: Выделить всё
Authenticator.authenticateПодробнее здесь: https://stackoverflow.com/questions/793 ... -in-okhttp
Мобильная версия