源码地址: Rxjava2Retorfit封装
PS:服务器,使用phpstud集成的本地服务器。用的ThinkPhp框架。(原谅我没有网络服务器。。)
你只需把后台 代码 解压到 phpstud安装目录的WWW下面。
如:D:\phpStudy\WWW
后台代码:SwmSignPhp.zip
数据表导入进 PHPmyadmin即可。wm_sign.sql
运行结果(没什么好展示的了、、):
RxJava2Retrofit请求.gif一、先看一下如何使用的。
如没有特殊需求,你只需要处理onNext()方法中传送的基类数据即可,强转为你所需要的。请求失败等操作在SwmRxHttpUtils.java已经做好了处理
// 请求数据
private void requestTaskListData() {
new SwmRxHttpUtils(new SwmRxHttpUtils.SwmIsRequestComListener() {
@Override
public void onSubscribe(Disposable d) {
}
@Override
public void onNext(BaseData baseData) {
TaskListBean taskListBean = (TaskListBean) baseData;
List<TaskListBean.DataBean> taskListBeanData = taskListBean.getData();
// 将请求到的数据 添加的 适配器的 集合中。
for (TaskListBean.DataBean dataBean :
taskListBeanData) {
TaskItem taskItem = new TaskItem(TaskItem.TASK_LIST_ITEM);
taskItem.setDataBean(dataBean);
mTaskItems.add(taskItem);
}
taskListBeanData.clear();
mTaskItemQuickAdapter.notifyDataSetChanged();
}
@Override
public void onError(Throwable e) {
}
@Override
public void onComplete() {
}
}).getTaskList(1);
二、准备工作
导入所需库
在Project的build.gradle下allprojects中导包
allprojects {
repositories {
google()
jcenter()
maven { url 'https://jitpack.io' }
}
}
在Module的build.gradle下dependencies中导包
dependencies {
// 导入 rxjava rxandroid 包
implementation 'io.reactivex.rxjava2:rxjava:2.1.5'
implementation 'io.reactivex.rxjava2:rxandroid:2.0.1'
// 导入 retrofit 库
implementation 'com.squareup.retrofit2:retrofit:2.3.0'
// 导入 gson 转换器
implementation 'com.squareup.retrofit2:converter-gson:2.3.0'
// 导入Retrofit.addCallAdapterFactory(RxJava2CallAdapterFactory.create())的配置包
implementation 'com.squareup.retrofit2:adapter-rxjava2:2.3.0'
// 导入 log拦截器
compile 'com.parkingwang:okhttp3-loginterceptor:0.5'
}
在Application 中 初始化 okhttp 和 retrofit配置,并创建服务器接口(ApiService)
创建ApiService接口,做URL处理
关于URL的处理,可以参考官网或其他
Retrofit官网
如:
@GET("Task/findProgress")
Observable<TaskListBean> getTaskList(@Query("userId") int userId);
TaskListBean
TaskListBean为你 返回的json 生成的 javaBean文件。
封装的工具类,可以看一下
源码地址: Rxjava2Retorfit封装
最后贴一个,我封装好的 okhttp工具类,请求代码
只需 new 出来网络请求工具类, 随后 调用 get或者post方法,添加一个请求完成的监听。没了。 感觉比上方的更轻松。有时间贴出来。
// 签到操作
new SwmOkhttpNetUtils(SignSignBean.class)
.getRequestFromServer(WholeUrl.SIGN_SIGN + "?userId=1")
.setMyIsRequestCompleteListener(new SwmOkhttpNetUtils.MyIsRequestCompleteListener() {
@Override
public void requestNetSuccess(BaseData baseData) {
SignSignBean signSignBean = (SignSignBean) baseData;
status.set(i, true);
notifyDataSetChanged();
SwmToastUtils.showSingletonToast(context.getString(R.string.sign_suc));
if (onSignedSuccess != null) {
onSignedSuccess.OnSignedSuccess(signSignBean);
}
}
@Override
public void requestNetStatusNot200(BaseData baseData) {
if (onSignedSuccess != null) {
onSignedSuccess.OnSignedFail();
}
}
@Override
public void requestNetFail(Exception e) {
}
@Override
public void requestComplete() {
viewHolder.tv.setEnabled(true);
}
});
网友评论