最近的项目,在加载图片时需要用户的身份信息,服务器端将用户的信息采用Session的方式保存。
那怎样为将SessionId加入到ImageLoader请求的中去呢?
1.首先自定义一个Downloader
public class ImageLoaderWithCookie extends BaseImageDownloader {
public ImageLoaderWithCookie(Context context) {
super(context);
}
@Override
protected HttpURLConnection createConnection(String url, Object extra) throws IOException {
// Super...
HttpURLConnection connection = super.createConnection(url, extra);
connection.setRequestProperty("Cookie",extra.toString());//extra就是SessionId,何时传入,见第三步
return connection;
}
}
2.初始化ImageLoader中加入此Loader
ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(
this)
.imageDownloader(new ImageLoaderWithCookie(getContext()))
...
.build();
ImageLoader.getInstance().init(config); //初始化
3.加载图片时,传入SessionId
DisplayImageOptions options = new DisplayImageOptions.Builder()
...
.extraForDownloader(sessionId)
...
.build();
ImageLoader.getInstance().displayImage(
url.toString(), view,
options);