retrofit2 获取响应头信息

前言
最近几天晚上时候,一直在修改自己前一段时间写的下载工具。想着把它变成开源库造福大家。原本,以为是很简单的事。结果在下载文件格式哪里,博主陡然发现!
以前自己用的时候下载文件格式自己是知道的。所以,命名时候也就one.apk ,two.jpeg。这在个人使用的时候 完全不是问题。但如果变成开源库,这个就很影响逼格了!!!。开源库已经写好!!!Android下载库

确定下载格式

  1. 解析下载链接,如果包含 .apk 之类的 ,就将 “/” 到格式之间的取下来,作为文件名 包含格式。
    例如下面这个:就应该截取为 201809281641cj0928.apk
    在这里插入图片描述
  2. 但是好多下载链接 ,是没有 .文件格式 的。这时候 ,我们可以获取响应头里面的 “Content-Disposition” 它里面有一个 filename 属性,我们这时候 把filename的值当做文件名就行了。 但是,好多时候后台 如果 不返回这东西怎么办?
  3. 我们还可以根据 Content-Type来确定文件格式,就是不太准确。 Content-Type: application/vnd.android.package-archive。因为,有时候 后面这个值对应好几个文件格式,。。。。

上面都是题外话,这里是本文重点

获取response.header 响应头

这个就是本文的重点了。博主用的是retrofit2 ,而retrofit2 网络活动还是调用了okhttp3 。
所以,获取响应头的方式有两种:

  1. 我们可以给okhttp添加拦截器来获取response ,这样就可以取到响应头了。这个需要我们在创建OkHttpClient OkHttpClient okHttpClient = new OkHttpClient.Builder().connectTimeout(3, TimeUnit.SECONDS).addInterceptor(new DownLoadInterceptor(downLoadBean)).build(); 调用.addInterceptor()方法。
/**
 * 下载进度拦截器   在okhttp客户端初始化时候添加进去
 * 创建时间 2018/9/4
 *  @author plani
 */
public class DownLoadInterceptor implements Interceptor {
   
    private DownLoadBean downLoadBean;

    public DownLoadInterceptor(DownLoadBean downLoadBean) {
   
        this.downLoadBean = downLoadBean;
    }

    @Override
    public Response intercept(Chain chain) throws IOException {
   
        
  • 5
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值