OkHttpUtils网络请求为什么进行二次封装?

1、减少代码量
2、后期换网络处理框架方便
二次封装的实现原理
1、将网络请求提取在一个方法中
2、对里面的可变参数,可以通过参数传递过去,也可以提供一个set方法传递过去
3、对于请求失败和成功,我们可以使用接口回调,让调用该方法的对象处理
封装后的网络处理类的功能
1、网络请求
2、xml数据转换成javaBean
每一个处理网络请求的ListView都要处理的3数据方法
1、初始化数据
2、下拉刷新数据
3、上拉加载数据
封装前的代码
/**
* 3,加载更多
* 注意事项:
* 请求成功数据更新之后,要关闭SpringView
*/
private void onDealLoadmore() {
//资讯的网络请求地址
String newsUrl = Constant.NEWS_URL;
//http://www.oschina.net/action/api/news_list?pageIndex=0&catalog=1&pageSize=20
//关闭SpringView
mSpringView.onFinishFreshAndLoad();
//网络请求
OkHttpUtils
.get()
.url(newsUrl)
.addParams("pageIndex", mCurrentPageIndex + "")//固定
.addParams("catalog", "1")//固定,1代表资讯
.addParams("pageSize", "20")//因为,一页加载20条数据
.build()
.execute(new StringCallback() {
@Override
public void onError(Call call, Exception e, int id) {
Toast.makeText(mContext, "上拉加载失败", Toast.LENGTH_SHORT).show();
/* //关闭SpringView
mSpringView.onFinishFreshAndLoad();*/
}
@Override
public void onResponse(String response, int id) {
//请求成功,将字符串转为javaBean,并获取里面的泛型为News的集合
NewsList newsList = XmlUtils.toBean(NewsList.class, response.getBytes());
//对请求的数据进行非空判断
if (newsList != null) {
List<News> list = newsList.getList();
if (list != null && list.size() > 0) {
//数据的更新
mData.addAll(newsList.getList());
//适配器的更新
mMyNewsPagerAdapter.notifyDataSetChanged();
//请求页的索引要加1
++mCurrentPageIndex;
/* //关闭SpringView
mSpringView.onFinishFreshAndLoad();*/
}
}
}
});
}
封装后的代码
/**
* 3,加载更多
* 注意事项:
* 请求成功数据更新之后,要关闭SpringView
*/
private void onDealLoadmore() {
mSpringView.onFinishFreshAndLoad();
mNewsPagerProtocol.setCurrentPageIndex(mCurrentPageIndex);
mNewsPagerProtocol.loadData(new NewsPagerProtocol.Callback() {
@Override
public void onError(Call call, Exception e, int id) {
Toast.makeText(mContext, "下拉刷新失败", Toast.LENGTH_SHORT).show();
}
@Override
public void onResponse(NewsList newsList, int id) {
if (newsList != null) {
//获取刷新的数据集合
List<News> list = newsList.getList();
//健壮性判断
if (list != null && list.size() > 0) {
//更新数据集合
mData.addAll(list);
//更新适配器
mMyNewsPagerAdapter.notifyDataSetChanged();
//更新页数的索引值
mCurrentPageIndex ++ ;
}
}
}
});
}
网络封装的代码
/**
* Author: 归零
* Date: 2017/3/4 1:08
* Email: 4994766@qq.com
* Description:网络请求和数据解析
*/
public class NewsPagerProtocol {
private int mCurrentPageIndex;
public void setCurrentPageIndex(int currentPageIndex) {
mCurrentPageIndex = currentPageIndex;
}
public void loadData(final Callback callback) {
//资讯的网络请求地址
String newsUrl = Constant.NEWS_URL;
//http://www.oschina.net/action/api/news_list?pageIndex=0&catalog=1&pageSize=20
//网络请求
OkHttpUtils
.get()
.url(newsUrl)
.addParams("pageIndex", mCurrentPageIndex + "")//固定
.addParams("catalog", "1")//固定,1代表资讯
.addParams("pageSize", "20")//因为,一页加载20条数据
.build()
.execute(new StringCallback() {
@Override
public void onError(Call call, Exception e, int id) {
//因为返回失败处理的请求不一样,所以不处理,交给调用的方法处理
callback.onError(call, e, id);
}
@Override
public void onResponse(String response, int id) {
//请求成功,将字符串转为javaBean,并获取里面的泛型为News的集合
NewsList newsList = XmlUtils.toBean(NewsList.class, response.getBytes());
//将转换后的数据通过接口回调,返回给调用方法的
callback.onResponse(newsList, id);
}
});
}
public interface Callback {
public void onError(Call call, Exception e, int id);
public void onResponse(NewsList newsList, int id);
}
}
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
# Android
# OkHttpUtils
# 网络请求
# Android 网络请求框架解析之okhttp与okio
# Android OkHttp库简单使用和封装教程助你快速掌握网络请求技能
# 加载
# 回调
# 都要
# 可以通过
# 可以使用
# 提供一个
# 转换成
# 大家多多
# 后期
# 健壮性
# action
# net
# news_list
# api
# NEWS_URL
# Constant
# http
# oschina
# www
# pageIndex
相关文章:
如何在腾讯云服务器上快速搭建个人网站?
建站主机是否等同于虚拟主机?
C#如何序列化对象为XML XmlSerializer用法
金*站制作公司有哪些,金华教育集团官网?
如何配置支付宝与微信支付功能?
如何挑选最适合建站的高性能VPS主机?
潮流网站制作头像软件下载,适合母子的网名有哪些?
相册网站制作软件,图片上的网址怎么复制?
七夕网站制作视频,七夕大促活动怎么报名?
天河区网站制作公司,广州天河区如何办理身份证?需要什么资料有预约的网站吗?
制作网站哪家好,cc、.co、.cm哪个域名更适合做网站?
建站之星如何通过成品分离优化网站效率?
建站主机如何安装配置?新手必看操作指南
如何用花生壳三步快速搭建专属网站?
智能起名网站制作软件有哪些,制作logo的软件?
如何用好域名打造高点击率的自主建站?
网站制作网站,深圳做网站哪家比较好?
行程制作网站有哪些,第三方机票电子行程单怎么开?
网站制作壁纸教程视频,电脑壁纸网站?
江苏网站制作公司有哪些,江苏书法考级官方网站?
番禺网站制作公司哪家值得合作,番禺图书馆新馆开放了吗?
高端网站建设与定制开发一站式解决方案 中企动力
孙琪峥织梦建站教程如何优化数据库安全?
海南网站制作公司有哪些,海口网是哪家的?
韩国服务器如何优化跨境访问实现高效连接?
如何用西部建站助手快速创建专业网站?
专业公司网站制作公司,用什么语言做企业网站比较好?
宝塔建站助手安装配置与建站模板使用全流程解析
制作网站外包平台,自动化接单网站有哪些?
制作电商网页,电商供应链怎么做?
,购物网站怎么盈利呢?
高配服务器限时抢购:企业级配置与回收服务一站式优惠方案
山东网站制作公司有哪些,山东大源集团官网?
建站上传速度慢?如何优化加速网站加载效率?
如何快速生成专业多端适配建站电话?
建站之星后台密码遗忘?如何快速找回?
如何快速查询域名建站关键信息?
高端云建站费用究竟需要多少预算?
如何在阿里云完成域名注册与建站?
如何确认建站备案号应放置的具体位置?
PHP 500报错的快速解决方法
黑客入侵网站服务器的常见手法有哪些?
建站之星免费模板:自助建站系统与智能响应式一键生成
c++怎么实现高并发下的无锁队列_c++ std::atomic原子变量与CAS操作【详解】
如何快速搭建高效WAP手机网站?
高端建站三要素:定制模板、企业官网与响应式设计优化
如何快速重置建站主机并恢复默认配置?
如何通过PHP快速构建高效问答网站功能?
如何通过宝塔面板实现本地网站访问?
如何用PHP快速搭建CMS系统?
*请认真填写需求信息,我们会在24小时内与您取得联系。