Skip to content

基于okhttp3+RxJava2+RxAndroid+greenDao的Android网络通信组件;支持Callback和RxJava2两种形式回调;支持文件下载及下载管理;支持断点续传等

License

Notifications You must be signed in to change notification settings

LaurenceYang/EasyHttp

Repository files navigation

EasyHttp

License Download Support RxJavaDownload

特性

  • 支持Get/Post/Delete/Put请求
  • 完美支持String/Json/自定义对象返回
  • Get支持全局缓存设置及不同请求不同缓存设置
  • 支持Callback和RxJava2两种形式回调
  • 支持文件下载及下载管理
  • 支持文件下载的断点续传
  • 支持文件上传
  • 使用简单;轻量级代码;结构清晰
  • 基于okhttp3
  • 下载管理数据库使用greendao

最新版本

  • v0.8.0 - 2017.06.15 - 添加Delete/Put请求支持;下载添加404/403异常处理;容错性稳定性优化;其它细节优化
  • v0.7.0 - 2017.03.15 - Get/Post请求支持RxJava2
  • v0.6.0 - 2017.02.27 - Get/Post请求完美支持String,Json,自定义对象返回;下载模块添加异常检测及容错处理
  • v0.5.0 - 2017.02.21 - 初版发布,支持Get、Post、下载、上传、断点续传、不同缓存策略等

ScreenShot

main

使用指南

With Gradle

在全局build.gradle文件的repositories添加如下所示配置:

jcenter()

在module的build.gradle文件的dependencies区域内添加如下所示配置:

compile 'com.yang.easyhttp:easyhttp:0.8.0'

初始化

在Applicaiton里进行初始化。

public class MainApplication extends Application {

    @Override
    public void onCreate() {
        super.onCreate();

        // 初始化HttpClient.
        EasyHttpClient.init(this);

        // 初始化下载环境.optional.
        EasyHttpClient.initDownloadEnvironment(2);

    }
}

Get 请求

EasyHttp提供EasyHttpClient.get接口用来异步请求网络数据。
返回自定义对象eg:

EasyHttpClient.get(url, new EasyCustomCallback<Entity>() {
  @Override
  public void onStart() {//ui thread.
      dialog.show();
  }

  @Override
  public void onFinish() {//ui thread.
      dialog.cancel();
  }

  @Override
  public void onSuccess(Entity content) {//ui thread.
      // ui operation using content object.
  }

  @Override
  public void onFailure(Throwable error, String content) {//ui thread.
      body.setText(content + "\n" +error.toString());
  }
});

Get请求接口列表如下:

public static <T> void get(String url, EasyCallback<T> callback);
public static <T> void get(String url, EasyRequestParams easyRequestParams, EasyCallback<T> callBack);
public static <T> void get(String url, int cacheType, EasyCallback<T> callback);
public static <T> void get(String url, EasyRequestParams easyRequestParams, int cacheType, EasyCallback<T> callback);

返回的是Json对象时,可以使用EasyJsonCallback作为回调。

返回的是普通的字符串,可以使用EasyStringCallback作为回调。

EasyRequestParams用来设定请求的参数。

EasyCacheType用来设定每个请求的缓存类型。

Post请求

EasyHttp提供EasyHttpClient.post接口用来异步post数据。

EasyRequestParams params = new EasyRequestParams();
params.put("key1", "value1");
params.put("key2", "value2");

EasyHttpClient.post(postUrl,
        params,
        new EasyStringCallback() {
            @Override
            public void onStart() {
                dialog.show();
            }

            @Override
            public void onFinish() {
                dialog.cancel();
            }

            @Override
            public void onSuccess(String content) {
                Toast.makeText(PostActivity.this, "提交成功", Toast.LENGTH_LONG);
                result.setText(content);
            }

            @Override
            public void onFailure(Throwable error, String content) {
                Toast.makeText(PostActivity.this, "提交失败", Toast.LENGTH_LONG);
                result.setText(content + "\n" + error.getMessage());
            }
        }
);

Post请求接口列表如下:

public static <T> void post(String url, EasyRequestParams easyRequestParams, EasyCallback<T> callback)

同Get请求类似,返回的是Json数据,可以使用EasyJsonCallback类来作为回调。

返回的是普通的字符串,可以使用EasyStringCallback作为回调。

EasyRequestParams用来设定post的键值对。

Download File

初始化时可通过initDownloadEnvironment(int threadCount)来设定同时下载的数量。

跟下载相关的类包括:

  • EasyDownloadManager 负责管理下载任务
  • EasyDownloadTask 下载任务
  • EasyDownloadTaskListener 下载回调
  • EasyTaskEntity 任务的实体
  • EasyTaskStatus 下载的状态

关于下载的管理,可以参考sampe中的DownloadAdapter文件,实现了文件的下载,断点续传,进度展示等通用功能。

Upload File

EasyHttp提供EasyHttpClient.uploadFile接口用来上传文件。接口如下:

public static <T> void uploadFile(String url, String filePath, EasyCallback<T> callback) 

支持RxJava

EasyHttp提供RxJava2的扩展,如需使用RxJava2回调方式, 在module的build.gradle文件的dependencies区域内如下所示进行配置:

compile 'com.yang.easyhttp:easyhttp:0.8.0'
compile 'com.yang.rxeasyhttp:rxeasyhttp:0.8.0'

Get请求的RxJava形式

 RxEasyHttp.get(url.toString(), new RxEasyStringConverter())
     .observeOn(AndroidSchedulers.mainThread())
     .subscribe(new FlowableSubscriber<String>() {
         @Override
         public void onSubscribe(Subscription s) {
             s.request(Long.MAX_VALUE);
             dialog.show();
             body.setText("");
         }

         @Override
         public void onNext(String response) {
             body.setText(response);
         }

         @Override
         public void onError(Throwable t) {
             body.setText(t.toString());
         }

         @Override
         public void onComplete() {
             dialog.cancel();
         }
     });

Post请求的RxJava形式

RxEasyHttp.post(url, params, new RxEasyCustomConverter<PostEntity>() {
        @Override
        public void doNothing() {}
    })
    .observeOn(AndroidSchedulers.mainThread())
    .subscribe(new FlowableSubscriber<PostEntity>() {

        @Override
        public void onSubscribe(Subscription s) {
            s.request(Long.MAX_VALUE);
            dialog.show();
        }

        @Override
        public void onNext(PostEntity entity) {
            Toast.makeText(RxPostActivity.this, "提交成功", Toast.LENGTH_LONG).show();
            result.setText("status : " + entity.getStatus() + "\n" +
                    "message : " + entity.getMessage());

        }

        @Override
        public void onError(Throwable t) {
            Toast.makeText(RxPostActivity.this, "提交失败", Toast.LENGTH_LONG).show();
            result.setText(t.getMessage());
            dialog.cancel();
        }

        @Override
        public void onComplete() {
            dialog.cancel();
        }
    });

About

基于okhttp3+RxJava2+RxAndroid+greenDao的Android网络通信组件;支持Callback和RxJava2两种形式回调;支持文件下载及下载管理;支持断点续传等

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages