Я использую Retrofit 2 (2.0.0-beta3) с клиентом OkHttp в приложении для Android, и до сих пор все отлично. Но в настоящее время я сталкиваюсь с проблемой с OkHttp Interceptor. Сервер, с которым я общаюсь, принимает текс доступа в теле запроса, поэтому, когда я перехватываю запрос, чтобы добавить токен аутентификации или метод аутентификации Authenticator, когда мне нужно добавить обновленный токен аутентификации, мне нужно изменить тело запроса для этой цели, Но похоже, что я могу добавлять данные только в заголовки, но не в тело текущего запроса. Код, который я написал до сих пор, выглядит следующим образом:
client.interceptors().add(new Interceptor() {
@Override
public Response intercept(Chain chain) throws IOException {
Request request = chain.request();
if (UserPreferences.ACCESS_TOKEN != null) {
// need to add this access token in request body as encoded form field instead of header
request = request.newBuilder()
.header("access_token", UserPreferences.ACCESS_TOKEN))
.method(request.method(), request.body())
.build();
}
Response response = chain.proceed(request);
return response;
}
});
Может ли кто-нибудь указать мне в правильном направлении, как изменить тело запроса, чтобы добавить токен доступа (первый раз или обновлен после обновления токена)? Любой указатель на правильное направление будет оценен.