【发布时间】:2016-04-19 21:02:32
【问题描述】:
我在 Android 应用程序中使用带有 OkHttp 客户端的 Retrofit 2 (2.0.0-beta3),到目前为止一切顺利。但目前我正面临 OkHttp 拦截器的问题。我正在与之通信的服务器正在请求正文中获取访问令牌,因此当我拦截添加身份验证令牌的请求或在需要添加更新的身份验证令牌时在 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;
}
});
谁能指出我正确的方向,即如何修改请求正文以添加我的访问令牌(第一次或在令牌刷新后更新)?任何指向正确方向的指针将不胜感激。
【问题讨论】: