【发布时间】:2014-11-25 09:35:45
【问题描述】:
我正在使用picasso 库来下载位图,因此在 api 中我需要在标头中传递令牌。我尝试了来自该线程Android Picasso library, How to add authentication headers?的以下代码
public static Picasso getImageLoader(final Context context) {
// fetch the auth value
sSharedPreferences = PreferenceManager.getDefaultSharedPreferences(context.getApplicationContext());
Picasso.Builder builder = new Picasso.Builder(context);
builder.downloader(new OkHttpDownloader(context) {
@Override
protected HttpURLConnection openConnection(Uri uri) throws IOException {
HttpURLConnection connection = super.openConnection(uri);
connection.setRequestProperty(Constant.HEADER_X_API_KEY, sSharedPreferences.getString(SharedPreferenceKeys.JSESSIONID, ""));
return connection;
}
});
sPicasso = builder.build();
return sPicasso;
}
毕加索请求
mTarget = new Target() {
@Override
public void onBitmapLoaded(Bitmap bitmap, Picasso.LoadedFrom loadedFrom) {
mdpImageView.setImageBitmap(bitmap);
Logger.d(TAG, "Test");
}
@Override
public void onBitmapFailed(Drawable drawable) {
Logger.d(TAG, "Test");
}
@Override
public void onPrepareLoad(Drawable drawable) {
Logger.d(TAG, "Test");
}
};
CustomPicasso.getImageLoader(getActivity()).with(getActivity()).load(URL).into(mTarget);
问题
我调试了我的代码,发现它从未调用过 OkHttpDownloader 的 openconnection 覆盖方法,所以我的请求总是失败,最后它调用 onBitmapFailed。
请帮助我必须做些什么才能正确传递标头值。
提前致谢。
【问题讨论】: