Android使用Retrofit 全局屏蔽重复请求

2018-04-27  本文已影响0人  曾经的你呀

[本文未经许可,不可转载或其他形式的分享 ]

Android 开发中网络请求很多都会用Retrofit,面试过程发现很多只会用不去了解http基础原理,不打牢基础,遇到问题不能很好的解决,在开发中经常遇到重复http请求,也就是一个请求还没有返回相同的请求又发出了,不但会让客户端体验不好还可能导致服务器压力过大。

解决方法

anyway,我们就是想要一种方法要全局的拦截HTTP 的请求,重复的请求就不要了。

其实以前使用AsyncHttp 的时候全局拦截重复http请求还是很简单的。那么Retrofit 也是一样的原理,可能大家不熟悉。

下面看看部分代码

  1. 添加记录请求或者忽略
                    String requestKey = MD5Util.getUpperMD5Str(Request.toString());
                    if (null == requestIdsMap.get(requestKey)) {
                        requestIdsMap.put(requestKey, System.currentTimeMillis());
                    } else {
                       //自定义的一个错误Response ,哈哈哈这个操作很骚
                        return new Response.Builder()
                                .xxxx
                                .yyyy
                                .build();
                    }

2.在拦截器里面拦截请求,并取消map中的http请求标记

            requestIdsMap.remove(requestKey);

就是这么Easy, Retrofit的设计实在是巧妙,添加各种骚操作也是很简单

Demo:https://github.com/AnyLifeZLB/MVP-Dagger2-Rxjava2

代码在Demo中需要自己找,Demo 是组件化架构模式结合Dagger,mvp,rxjava 等

上一篇下一篇

猜你喜欢

热点阅读