-
Notifications
You must be signed in to change notification settings - Fork 10
拦截器
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
,如果通过此方式,
你可以自定义任何组装过程中的任意组件