Skip to content

Commit

Permalink
升级2.0.0, 更新Readme
Browse files Browse the repository at this point in the history
  • Loading branch information
jeasonlzy committed Oct 1, 2016
1 parent a31b4e2 commit a2c211f
Show file tree
Hide file tree
Showing 3 changed files with 50 additions and 45 deletions.
8 changes: 5 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,14 +1,15 @@
![image](https://github.com/jeasonlzy/Screenshots/blob/master/okgo/logo4.jpg)

# OkGo
# OkGo - `OkHttpUtils-2.0.0` 升级后改名 `OKGo`,全新完美支持`RxJava`

### OkHttpUtils-2.0.0 升级后改名 OKGo, 全新完美支持RxJava。该库是封装了okhttp的网络框架,支持大文件上传下载,上传进度回调,下载进度回调,表单上传(多文件和多参数一起上传),链式调用,可以自定义返回对象,支持Https和自签名证书,支持cookie自动管理,支持四种缓存模式缓存网络数据,支持301、302重定向,扩展了统一的上传管理和下载管理功能
### 该库是封装了okhttp的网络框架,可以与RxJava完美结合,支持大文件上传下载,上传进度回调,下载进度回调,表单上传(多文件和多参数一起上传),链式调用,可以自定义返回对象,支持Https和自签名证书,支持cookie自动管理,支持四种缓存模式缓存网络数据,支持301、302重定向,扩展了统一的上传管理和下载管理功能

该项目参考了以下项目:

* [https://github.com/hongyangAndroid/okhttp-utils](https://github.com/hongyangAndroid/okhttp-utils)
* [https://github.com/yanzhenjie/NoHttp](https://github.com/Y0LANDA/NoHttp)
* [https://github.com/wyouflf/xUtils](https://github.com/wyouflf/xUtils)
* [https://github.com/square/retrofit](https://github.com/square/retrofit)

在此特别感谢上述作者,喜欢原作的可以去使用原项目。同时欢迎大家下载体验本项目,如果使用过程中遇到什么问题,欢迎反馈。

Expand Down Expand Up @@ -67,6 +68,7 @@

## 2.使用注意事项
* `okgo`使用的`okhttp`的版本是最新的 3.4.1 版本,和以前的 2.x 的版本可能会存在冲突。
* `okrx`是基于`RxJava``RxAndroid`的扩展,如果不需要可以不必引入
* `okserver`是对`okgo`的扩展,统一了下载管理和上传管理,对项目有需要做统一下载的可以考虑使用该扩展,不需要的可以直接使用`okgo`即可。
* 对于缓存模式使用,需要与返回对象相关的所有`javaBean`必须实现`Serializable`接口,否者会报`NotSerializableException`
* 使用缓存时,如果不指定`cacheKey`,默认是用url带参数的全路径名为`cacheKey`
Expand All @@ -87,7 +89,7 @@
* 支持根据Tag取消请求
* 支持自定义泛型Callback,自动根据泛型返回对象

## 4.OkRx扩功能
## 4.OkRx 扩展功能
#详细使用方法点击这里: [OkRx使用文档](https://github.com/jeasonlzy/OkGO/blob/master/README_RX.md)
* 完美结合RxJava
* 比Retrofit更简单方便
Expand Down
85 changes: 44 additions & 41 deletions README_RX.md
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
![image](https://github.com/jeasonlzy/Screenshots/blob/master/okgo/logo3.png)

# OkGo
# OkGo - Rx扩展

### Rx扩展,可以方便的和`RxJava`联用,如果你熟悉`Retrofit`,那么这个框架和`Retrofit`使用方式很像
### 可以方便的和`RxJava`联用,如果你熟悉`Retrofit`,那么这个框架和`Retrofit`使用方式很像

## 联系方式
* 邮箱地址: [email protected]
Expand All @@ -24,7 +24,7 @@

## 一.用法
### 0.最开始的配置
`OkRx``OkGo` 的扩展,所以要想使用OkRx,那么请先按照OkGo的配置文档,做相应的初始化。
`OkRx``OkGo` 的扩展,所以要想使用`OkRx`,那么请先按照`OkGo`的配置文档,做相应的初始化。

### 1.在gradle中添加一行依赖
```java
Expand All @@ -37,46 +37,50 @@

### 2.调用请求代码
我们还是像正常使用OkGo的方式一样,传入我们需要请求的Url,和我们需要的参数,那么最关键的一行就是最后调用`getCall()`这个方法。
这里传入的两个参数进行一下说明:
第一个参数是`Convert`对象,表示需要将服务器返回的数据流解析成什么对象,这里我们先用最简单的`String`做转换,`StringConvert`对象也是库中内置的转换器。
第二个参数是`Adapter`对象,表示需要将解析的结果用什么对象包装,该参数可以省略不写,那么默认是`Call<T>`这个对象包装,当然,我们要使用Rx的调用,使用这个肯定是不行的,所以我们传入OkRx扩展的`RxAdapter`对象,同样他需要一个泛型,该泛型必须和`Convert`的泛型一致,否则就发生了类型转换异常。

> 这里传入的两个参数进行一下说明:
* 第一个参数是`Convert`对象,表示需要将服务器返回的数据流解析成什么对象,这里我们先用最简单的`String`做转换,`StringConvert`对象也是库中内置的转换器。
* 第二个参数是`Adapter`对象,表示需要将解析的结果用什么对象包装,该参数可以省略不写,那么默认是`Call<T>`这个对象包装,当然,我们要使用Rx的调用,使用这个肯定是不行的,所以我们传入OkRx扩展的`RxAdapter`对象,同样他需要一个泛型,该泛型必须和`Convert`的泛型一致,否则就发生了类型转换异常。

以上两个参数具体的注意事项我们后续详细再说。
```java
Observable<String> call = OkGo.post(Urls.URL_METHOD)//
.headers("aaa", "111")//
.params("bbb", "222")//
.getCall(StringConvert.create(), RxAdapter.<String>create());
Observable<String> call = OkGo.post(Urls.URL_METHOD)//
.headers("aaa", "111")//
.params("bbb", "222")//
.getCall(StringConvert.create(), RxAdapter.<String>create());
```

### 3.调用Rx转换代码
现在我们已经获取了`Observable`对象了,熟悉Rxjava的你难道还不会使用了吗,以下是简单的在请求前弹出loading,结束后展示信息的代码。
现在我们已经获取了`Observable`对象了,熟悉`RxJava`的你难道还不会使用了吗,以下是简单的在请求前弹出loading,结束后展示信息的代码。
```java
call.doOnSubscribe(new Action0() {
@Override
public void call() {
showLoading(); //开始请求前显示对话框
}
})//
.observeOn(AndroidSchedulers.mainThread())//切换到主线程
.subscribe(new Action1<String>() {
@Override
public void call(String s) {
dismissLoading(); //请求成功,关闭对话框
handleResponse(s, null, null);
}
}, new Action1<Throwable>() {
@Override
public void call(Throwable throwable) {
throwable.printStackTrace();
dismissLoading(); //请求失败
showToast("请求失败");
handleError(null, null);
}
});
call.doOnSubscribe(new Action0() {
@Override
public void call() {
showLoading(); //开始请求前显示对话框
}
})//
.observeOn(AndroidSchedulers.mainThread())//切换到主线程
.subscribe(new Action1<String>() {
@Override
public void call(String s) {
dismissLoading(); //请求成功,关闭对话框
handleResponse(s, null, null);
}
}, new Action1<Throwable>() {
@Override
public void call(Throwable throwable) {
throwable.printStackTrace();
dismissLoading(); //请求失败
showToast("请求失败");
handleError(null, null);
}
});
```

### 4.代码整合
### 4.代码整合
上面的调用是不是很简单,有人可能觉得链试代码太长,没关系,我们完全可以像Retrofit一样,自己写一个`ServerApi`类,这里面管理了所有的接口请求和参数,只是OkGo并不是采用的注解和反射实现的,而是通过传参来实现,相信对你你来讲,这样的方式更加直观。我们再将调用配合上`lambda`表达式,那么最后的结果是这样的:

这样的请求方式有没有惊艳到你!!
```java
OkGo.post(Urls.URL_METHOD)//
Expand All @@ -98,8 +102,7 @@
});
```

### 5。其他请求

### 5。其他请求
* 如果你想请求`String`,那么将第`2`步中的`getCall`方法,就是你想要的。
```java
getCall(StringConvert.create(), RxAdapter.<String>create())
Expand Down Expand Up @@ -127,12 +130,12 @@
推荐对每一个网络请求的`Subscription`对象都交由统一的`CompositeSubscription`去管理,在界面销毁或者需要取消的地方调用。
例如:在Activity中,当Activity销毁取消请求,可以在onDestory里面统一取消。
```java
@Override
protected void onDestroy() {
super.onDestroy();
@Override
protected void onDestroy() {
super.onDestroy();

unSubscribe();
}
unSubscribe();
}
```

## 三、自定义Convert使用
Expand Down
2 changes: 1 addition & 1 deletion build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -23,4 +23,4 @@ allprojects {

task clean(type: Delete) {
delete rootProject.buildDir
}
}

0 comments on commit a2c211f

Please sign in to comment.