前言
这里写了两种方式请求接口 (文中用了Java和Kotlin两种语言 没有特殊标示的都是Java)
- 普通方式
- Rx方式
建议是用Rx方式
常用调用方式
依赖
名称 | 引用方式 | 作用 |
---|---|---|
okhttp-OkGo |
compile 'com.lzy.net:okgo:3.0.4' |
HTTP请求 |
fastjson |
compile 'com.alibaba:fastjson:1.2.46' |
回调转JSON |
涉及的实体类
1 | public class ResultVo<T> { |
自定义回调
ZJJsonCallback
1 | import android.app.Activity; |
ZJStringCallback
1 | import android.app.Activity; |
调用方式
JsonCallback
1 | OkGo.post<ResultVo<String>>(ApiConfig.userapi_login) |
StringCallback
1 | OkGo.post<String>(ApiConfig.userapi_login) |
Rx方式
依赖
名称 | 引用方式 | 作用 |
---|---|---|
Okhttp-OkGo |
compile 'com.lzy.net:okgo:3.0.4' compile 'com.lzy.net:okrx2:2.0.2' |
HTTP请求 |
Fastjson |
compile 'com.alibaba:fastjson:1.2.46' |
回调转JSON |
Rxjava |
implementation 'io.reactivex.rxjava2:rxjava:2.1.10' |
Rx |
RxAndroid |
implementation 'io.reactivex.rxjava2:rxandroid:2.0.2' |
Rx |
转换器
1 | import com.alibaba.fastjson.JSON; |
封装接口
1 | import com.alibaba.fastjson.TypeReference; |
调用方式
Kotlin
1 | ZJUserApi.userapi_login("zhangjian", "123456") |
页面销毁取消请求
要想页面销毁时取消网络请求 就要做如下修改
定义Activity的基类(请忽略onCreate
中的方法 只是用来去掉状态栏的背景)
Kotlin
1 | open class SBaseActivity : AppCompatActivity() { |
调用的方法改成如下(Kotlin
)
1 | var disposable = ZJUserApi.userapi_login( |
这样页面在销毁时 就会取消请求了