文档章节

Glide加载需要权限验证的图片Url

Skqing
 Skqing
发布于 2016/05/16 17:21
字数 383
阅读 85
收藏 0
点赞 2
评论 0

Glide默认加载的图片Url是可以公开访问的图片Url,我们的场景里访问图片Url需要带上Cookie信息,否则无法获取图片。解决办法是为图片请求加上头信息

方法一是利用GlideModule

package com.mypackage;

public class MyGlideModule implements GlideModule { @Override public void applyOptions(Context context, GlideBuilder builder) { // Apply options to the builder here. }

@Override public void registerComponents(Context context, Glide glide) {
    // register ModelLoaders here.
}

} 1 2 3 4 5 6 7 8 9 10 11 1 2 3 4 5 6 7 8 9 10 11 // register ModelLoaders here. ModelLoader就是图片的加载器 参考sample 我们可以继承BaseGlideUrlLoader写一个自己Loader,重载里面的getHeaders

public class TbxImageLoader extends BaseGlideUrlLoader<MyUrlWrapperEntity> {

public static class Factory implements ModelLoaderFactory<MyUrlWrapperEntity, InputStream> {
    private final ModelCache<MyUrlWrapperEntity, GlideUrl> modelCache = new ModelCache<MyUrlWrapperEntity, GlideUrl>(500);

    @Override
    public ModelLoader<MyUrlWrapperEntity, InputStream> build(Context context, GenericLoaderFactory factories) {
        return new TbxImageLoader(context, modelCache);
    }

    @Override
    public void teardown() {
    }
}

public TbxImageLoader(Context context, ModelCache<MyUrlWrapperEntity, GlideUrl> modelCache) {
    super(context, modelCache);
}

@Override
protected String getUrl(MyUrlWrapperEntitymodel, int width, int height) {
    return model.getUrl();// Api.getPhotoURL(model, width, height);
}

@Override
protected Headers getHeaders(MyUrlWrapperEntitymodel, int width, int height) {

// return super.getHeaders(model, width, height); List<HttpCookie> list = RequestManager.getValidCookie(URI.create(model.getUrl())); LazyHeaders.Builder builder = new LazyHeaders.Builder(); for (HttpCookie hc: list) { builder.addHeader("Cookie",hc.toString()); } return builder.build(); } }

具体配置方法参考

这种方法是全局配置,还有一种方法是

GlideUrl glideUrl = new GlideUrl("url", new LazyHeaders.Builder() .addHeader("key1", "value") .addHeader("key2", new LazyHeaderFactory() { @Override public String buildHeader() { String expensiveAuthHeader = computeExpensiveAuthHeader(); return expensiveAuthHeader; } }) .build());

Glide....load(glideUrl)....;

本文转载自:http://blog.csdn.net/wangkai0681080/article/details/50527680

共有 人打赏支持
Skqing

Skqing

粉丝 33
博文 141
码字总数 20130
作品 0
深圳
后端工程师
Glide使用详解

引入 以androidStudio为例,在build.gradle中添加依赖: AndroidManifest.xml中声明一下网络权限: 使用 1加载图片 先with(),再load(),最后into(),这是最简单的三部曲 Glide.with()使用: w...

five519 ⋅ 2017/11/16 ⋅ 0

Android图片加载框架最全解析(一),Glide的基本用法

转载请注明出处:http://blog.csdn.net/guolinblog/article/details/53759439 本文同步发表于我的微信公众号,扫一扫文章底部的二维码或在微信搜索 郭霖 即可关注,每天都有文章更新。 现在A...

sinyu890807 ⋅ 2017/03/21 ⋅ 0

Android图片加载框架:Glide的常用用法|SquirrelNote

我的系列文章 Android图片加载框架:Glide的常用用法|SquirrelNote Android图片加载框架:Glide源码解析|SquirrelNote 前言 现在Android上的图片加载框架非常成熟,从最早的图片加载框架Uni...

跳动的松鼠 ⋅ 2017/11/18 ⋅ 0

Android图片加载框架最全解析(六),探究Glide的自定义模块功能

转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/72866313 本文同步发表于我的微信公众号,扫一扫文章底部的二维码或在微信搜索 郭霖 即可关注,每天都有文章更新。 不知...

sinyu890807 ⋅ 2017/10/09 ⋅ 0

Android图片加载框架最全解析(七),实现带进度的Glide图片加载功能

转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/78357251 本文同步发表于我的微信公众号,扫一扫文章底部的二维码或在微信搜索 郭霖 即可关注,每天都有文章更新。 我们...

sinyu890807 ⋅ 2017/10/26 ⋅ 0

Android图片加载框架最全解析(三),深入探究Glide的缓存机制

转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/54895665 本文同步发表于我的微信公众号,扫一扫文章底部的二维码或在微信搜索 郭霖 即可关注,每天都有文章更新。 在本...

sinyu890807 ⋅ 2017/05/23 ⋅ 0

Android图片加载库Glide和Fresco是如何工作的

原文地址:https://blog.mindorks.com/how-the-android-image-loading-library-glide-and-fresco-works-962bc9d1cc40 通常,我们在加载图片的时候经常会遇到如下的问题: 内存溢出错误 图片加...

尺锤 ⋅ 2017/09/16 ⋅ 0

Google推荐——Glide使用详解

零、前言 本文所使用的Glide版本为3.7.0 「推荐」设计模式系列 设计模式(零)- 面向对象的六大原则 设计模式(一)- 单例模式 设计模式(二)- Builder模式 设计模式(三)- 原型模式 设计模...

丁佳辉 ⋅ 06/12 ⋅ 0

Glide和Picasso如何获取磁盘缓存

现在流行的图片加载缓存类库有glide、picasso、ImageLoader 现在有个需求,就是app中要求点击图片放大功能,为了简便我们准备调用系统图片查看器,但是系统图片查看器是查看本地文件的,所以...

陈小伤 ⋅ 2015/08/07 ⋅ 2

Android Studio 第五十四期 - 超级巨图Glide3.7和Glide4.1.1优化加载方案

相信大家看到上面的巨图会很懵逼~最近产品经理朝令夕改,有点烦,要不是还有外包项目在做,就不想干了,所以忍了,先做完十一后再说,毕竟找工作还是有点折腾,需要更高的薪水和技术的沉淀。...

吴雨声 ⋅ 2017/09/19 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

从 Confluence 5.3 及其早期版本中恢复空间

如果你需要从 Confluence 5.3 及其早期版本中的导出文件恢复到晚于 Confluence 5.3 的 Confluence 中的话。你可以使用临时的 Confluence 空间安装,然后将这个 Confluence 安装实例升级到你现...

honeymose ⋅ 今天 ⋅ 0

Java8新增的DateTimeFormatter与SimpleDateFormat的区别

两者最大的区别是,Java8的DateTimeFormatter也是线程安全的,而SimpleDateFormat并不是线程安全。 在并发环境下使用SimpleDateFormat 为了能够在多线程环境下使用SimpleDateFormat,有这三种...

人觉非常君 ⋅ 今天 ⋅ 0

多线程如何控制执行顺序

线程的生命周期说明: 当线程被创建并启动以后,它既不是一启动就进入了执行状态,也不是一直处于执行状态,在线程的生命周期中,它要经过新建(New)、就绪(Runnable)、运行(Running)、...

MarinJ_Shao ⋅ 今天 ⋅ 0

用ZBLOG2.3博客写读书笔记网站能创造今日头条的辉煌吗?

最近两年,著名的自媒体网站今日头条可以说是火得一塌糊涂,虽然从目前来看也遇到了一点瓶颈,毕竟发展到了一定的规模,继续增长就更加难了,但如今的今日头条规模和流量已经非常大了。 我们...

原创小博客 ⋅ 今天 ⋅ 0

MyBatis四大核心概念

本文讲解 MyBatis 四大核心概念(SqlSessionFactoryBuilder、SqlSessionFactory、SqlSession、Mapper)。 MyBatis 作为互联网数据库映射工具界的“上古神器”,训有四大“神兽”,谓之:Sql...

waylau ⋅ 今天 ⋅ 0

以太坊java开发包web3j简介

web3j(org.web3j)是Java版本的以太坊JSON RPC接口协议封装实现,如果需要将你的Java应用或安卓应用接入以太坊,或者希望用java开发一个钱包应用,那么用web3j就对了。 web3j的功能相当完整...

汇智网教程 ⋅ 今天 ⋅ 0

2个线程交替打印100以内的数字

重点提示: 线程的本质上只是一个壳子,真正的逻辑其实在“竞态条件”中。 举个例子,比如本题中的打印,那么在竞态条件中,我只需要一个方法即可; 假如我的需求是2个线程,一个+1,一个-1,...

Germmy ⋅ 今天 ⋅ 0

Django第一期

安装Django 去https://www.djangoproject.com/download/ 下载最新版的Django,然后解压放到Anaconda\Lib\site-packages目录下,然后cmd进入此目录,输入安装命令: python setup.py install ...

大不了敲一辈子代码 ⋅ 今天 ⋅ 0

Springboot2 之 Spring Data Redis 实现消息队列——发布/订阅模式

一般来说,消息队列有两种场景,一种是发布者订阅者模式,一种是生产者消费者模式,这里利用redis消息“发布/订阅”来简单实现订阅者模式。 实现之前先过过 redis 发布订阅的一些基础概念和操...

Simonton ⋅ 今天 ⋅ 0

error:Could not find gradle

一.更新Android Studio后打开Project,报如下错误: Error: Could not find com.android.tools.build:gradle:2.2.1. Searched in the following locations: file:/D:/software/android/andro......

Yao--靠自己 ⋅ 昨天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部