我们在写项目的时候必不可少的会用到网络请求服务器,现Retrofit2+rxjava2+Mvp的框架组合已经成为了主流网络请求框架,我使用这个框架两年多了 以下分享下开发心得和使用方法
Retrofit2+rxjava2+Mvp基于okhttp3网络请求框架的使用 一 框架配置
Retrofit2+rxjava2+Mvp基于okhttp3网络请求框架的使用 二 请求数据
Retrofit2+rxjava2+Mvp基于okhttp3网络请求框架的使用 三 文件上传(支持多文件上传)
Retrofit2+rxjava2+Mvp基于okhttp3网络请求框架的使用 四 下载文件
我们今天以登录验证接口为例 实现请求传参返回数据
1,创建User实体,添加返回实体对象
2,创建请求回调接口
3,初始化 调用
第一步: 创建User实体,添加返回实体对象
public class User implements Serializable {
private String userId ;
/**
* 用户名
*/
private String username;
public User() {
}
public User(String userId, String username) {
this.userId = userId;
this.username = username;
}
public String getUsername() {
return this.username;
}
public void setUsername(String username) {
this.username = username;
}
public String getUserId() {
return this.userId;
}
public void setUserId(String userId) {
this.userId = userId;
}
}
第二步:创建请求回调接口
interface ICCheck {
interface IPCheck {
fun check(userName: String, password: String)
}
interface IVCheck : BaseView {
fun checkResult(boolean: Boolean)
}
}
class CheckPresenter : BasePresenter, ICCheck.IPCheck {
private val mProvider: LifecycleProvider<ActivityEvent>
private val mView: ICCheck.IVCheck
constructor(mProvider: LifecycleProvider<ActivityEvent>, mView: ICCheck.IVCheck) : super() {
this.mProvider = mProvider
this.mView = mView
}
override fun check(
userName: String,
password: String
) {
RetrofitHelper.getApi().loginApp(userName, password)
.map {
return@map it
}
.compose(RxUtils.rxSchedulerHelper())
.compose(mProvider.bindToLifecycle())
.subscribe({
if (it.code == Utils.SUCCESS) {
mView.checkResult(true)
} else
mView.showError(it.msg)
}, {
mView.showError("${it.message}")
})
}
}
第三步:初始化 调用
class LoginActivity : BaseActivity(), ICCheck.IVCheck{
override fun initView() {
val checkPresenter = CheckPresenter(this, this)//初始化
checkPresenter.check( "小明", "123456" )//请求接口调用
}
override fun checkResult(boolean: Boolean) {
//返回结果是否成功
}
override fun showError(msg: String) {
//返回异常
ToastUtils.showShort(msg)
}
}
注:以上我们可以发现 当我们配置好工具类之后 我们在MVP模式下 实际的activity的代码量很少 简洁明了 易于维护 好的,关于请求数据我们就写到这里 有不好的的地方或者有问题的还请小伙伴多多留言指教