【发布时间】:2015-10-31 18:27:09
【问题描述】:
我一直在为这个问题而绞尽脑汁,
我正在使用 Picasso 库从我的服务器加载和下载图像,但现在我想在我的下载请求中添加一个标题,但我似乎找不到这样做的方法。我想要做的就是设置一个像这样的标题: setHeader("授权", "承载" + token);
我在任何服务器请求中都使用此标头,但找不到将其添加到 picasso 行的方法。
任何帮助将不胜感激,谢谢!
【问题讨论】:
我一直在为这个问题而绞尽脑汁,
我正在使用 Picasso 库从我的服务器加载和下载图像,但现在我想在我的下载请求中添加一个标题,但我似乎找不到这样做的方法。我想要做的就是设置一个像这样的标题: setHeader("授权", "承载" + token);
我在任何服务器请求中都使用此标头,但找不到将其添加到 picasso 行的方法。
任何帮助将不胜感激,谢谢!
【问题讨论】:
Picasso 使用 OkHttp 作为 engine ,或者可以配置 Picasso 使用它,并且由于您必须设置 http 请求的标头,因此可以使用 @987654323 @。例如。这是我处理基本身份验证的拦截器:
private static class BasicAuthInterceptor implements Interceptor {
@Override
public Response intercept(Chain chain) throws IOException {
final Request original = chain.request();
final Request.Builder requestBuilder = original.newBuilder()
.header("Authorization", "Basic " + BASIC_AUTH_ENCODED)
.method(original.method(), original.body());
return chain.proceed(requestBuilder.build());
}
}
然后你将拦截器添加到 OkHttp 中
OkHttpClient okHttpClient = new OkHttpClient();
okHttpClient.interceptors().add(new BasicAuthInterceptor());
最后一步是将Picasso 配置为使用okHttpClient。
Picasso 的 builder 为它提供了一个方法:
new Picasso.Builder(context).downloader(new OkHttpDownloader(okHttpClient)).build();
gradle 依赖:
compile 'com.squareup.okhttp3:okhttp:3.0.1'
compile 'com.squareup.picasso:picasso:2.5.0'
【讨论】: