Skip to content

拦截器

echisan edited this page Apr 5, 2019 · 1 revision

基础拦截器

本项目用了拦截器模式去实现登陆,获取缓存Cookie,重试等机制。

要实现上传必须拥有以下三个基础拦截器,其顺序需要跟以下一致

InitUploadAttributesInterceptor-->CookieInterceptor-->LoginInterceptor-->ReCheckCookieInterceptor

ReCheckCookieInterceptor拦截器是主要为了实现重试机制而引入的一个新拦截器,主要作用不在这里详细说明了


如何自定义拦截器

自定义拦截器只需要实现以下接口即可,以下代码中有详细说明具体的方法的作用

/**
 * 上传图片接口的拦截器接口
 * <p>
 * 主要用于拦截上传图片的接口,对参数进行相应的处理
 * 而拦截处理后虽然已经不能影响上传结果了
 * 但是可以根据UploadResponse的结果做一些操作
 */
public interface UploadInterceptor {

    /**
     * 在真正调用上传图片接口之前,会先调用此方法,可以对UploadAttributes中的参数进行操作
     * 可以放心修改该参数中的值,因为是线程安全的
     *
     * @param uploadAttributes 上传图片的参数
     * @return 如果返回true才会继续往下调用,返回false则中断,最后也不会调用上传图片的方法
     */
    boolean processBefore(UploadAttributes uploadAttributes);

    /**
     * 在调用上传接口完毕后,会调用本方法
     * 可以根据该相应结果进行相应的处理
     * 由于已经调用过上传接口了,再拦截也没有意义了,所以没有任何返回值
     *
     * @param uploadResponse 上传相应
     */
    void processAfter(UploadResponse uploadResponse);

}

然后需要在UploadRequestBuilder.custom().addInterceptor(YourInterceptor)中加入

不过需要注意的是,addInterceptor方法只是回在那4个基础拦截器后增加

如果想插入到其中的任意位置,则通过UploadRequestBuilder辅助类目前来说是不能实现的

需要参照该类中的步骤,一步步组装UploadRequest,如果通过此方式,

你可以自定义任何组装过程中的任意组件

Clone this wiki locally