项目作者: kevinliu001

项目描述 :
基于Retrofit、OkHttp、RxJava实现的Android网络框架,集成加载等待框,建造者模式调用。
高级语言: Java
项目地址: git://github.com/kevinliu001/Android-okhttpclient.git
创建时间: 2019-03-07T03:39:54Z
项目社区:https://github.com/kevinliu001/Android-okhttpclient

开源协议:

下载


okhttpclient-android

基于Retrofit、OkHttp、RxJava实现的Android网络框架,集成加载等待框,建造者模式调用。

根据Retrofit的特性,可以每一次请求都创建一个请求接口,本人不太习惯,所以只定义了几个通用的请求方法,如GET、POST、PUT 等。
这样在发送请求的时候只需要传入对应的请求方法就可以,不用区分接口,返回数据支持json格式解析

注册RegisterBus可支持将请求结果返回到任何页面,类似于EventBus,观察者模式实现

欢迎大家讨论指正

使用方法:

一、初始化,可在Application onCreate中初始化

1、基础:

  1. RestClientConfigurator.getInstance()
  2. .with(this)
  3. .withApiHost("http://api.douban.com")
  4. .configure();

2、高级

  1. RestClientConfigurator.getInstance()
  2. .with(this)
  3. .withApiHost("http://api.douban.com")
  4. .withInterceptor(new Interceptor() {
  5. @Override
  6. public Response intercept(Chain chain) throws IOException {
  7. Request request = chain.request();
  8. //do something
  9. Response response = chain.proceed(request);
  10. //do something
  11. return response;
  12. }
  13. })
  14. .withRequestHeader(new IHttpHeader() {
  15. @Override
  16. public HashMap<String, String> httpHeader(Interceptor.Chain chain) {
  17. HashMap<String,String> map = new HashMap<>();
  18. map.put("device","Android");
  19. return map;
  20. }
  21. })
  22. //打开网络缓存,默认路径是当前应用的CacheDir,默认存储空间是10M
  23. //目前的规则是有网络时缓存5s,无网络时缓存1小时
  24. .withCacheEnable()
  25. //设置缓存路径
  26. .withCachePath("your cache path")
  27. //设置缓存空间大小
  28. .withCacheSize(10*1024*1024)
  29. //设置是否打开httplog
  30. .withHttpLog(true)
  31. //设置超时时间,默认60s
  32. .withTimeOut(60)
  33. .configure();

二、请求(拿豆瓣openApi举例):

  1. //请求豆瓣电影列表
  2. RestClient.builder()
  3. .url("/v2/movie/top250")
  4. //提交参数,也可以用.params(map)方式提交
  5. .param("start", "0")
  6. .param("count", "20")
  7. //请求时显示默认等待框,可以用.loader(this, LoaderStyle.BallBeatIndicator)改变等待框样式
  8. //等待框功能来源于https://github.com/81813780/AVLoadingIndicatorView
  9. .loader(this)
  10. //请求方法
  11. .method(KLHttpMethod.GET)
  12. //请求返回实体类型,不设置默认返回string类型
  13. .entityType(DoubanResponse.class)
  14. //是否显示错误提示Toast,默认显示
  15. .showErrorToast(true)
  16. //请求成功回调
  17. .success(new ISuccess<DoubanResponse>() {
  18. @Override
  19. public void onSuccess(DoubanResponse response) {
  20. //请求成功回调
  21. }
  22. })
  23. //请求失败回调
  24. .failure(new IFailure() {
  25. @Override
  26. public void onFailure(RestException e) {
  27. if (e.isNetWorkError()){
  28. //网络连接错误
  29. }
  30. else if (e.isServerError()){
  31. //服务器错误
  32. }
  33. else if (e.isDataError()){
  34. //数据错误
  35. }
  36. }
  37. })
  38. .build()
  39. .request();

3、注册RegisterBus,当返回成功时可以将返回结果回调到任何页面,使用方法如下:

  1. 比如在ActivityonCreate中注册
  2. RxBus.getInstance().register(this);
  3. onDestroy中取消注册
  4. RxBus.getInstance().unRegister(this);
  5. 在当前页面写一个注解方法
  6. @RegisterBus
  7. public void doubanMovies(DoubanResponse doubanResponse){
  8. //请求成功后会回调此处(同时也会回调success())
  9. }