Android网络开发框架Retrofit(三:进阶篇,接口实体类封装)
来源:互联网 发布:背叛了男朋友 知乎 编辑:程序博客网 时间:2024/06/06 00:04
Android网络开发框架Retrofit(三:进阶篇,接口实体类封装)
看了前两节后,相信大家对Retrofit有了初步的认识了,有的童鞋可能碰到了这样的一个问题,就是要请求的数据中,可能带有错误码的,以前的做法是先获取出错误码,然后通过对错误码的判断来进行下一步的操作,但Retrofit的做法好像不太理想,所以,今天就针对这个问题提出一个解决方案
我们先来看一个请求的数据 http://ip.taobao.com/service/getIpInfo.php?ip=121.33.6.228
{ "code": 0, "data": { "country": "中国", "country_id": "CN", "area": "华南", "area_id": "800000", "region": "广东省", "region_id": "440000", "city": "广州市", "city_id": "440100", "county": "荔湾区", "county_id": "440103", "isp": "电信", "isp_id": "100017", "ip": "121.33.6.228" }}
看得出,上面的数据中,带了一个错误码,然后才是数据,我们的实体类不可能都这样设计吧,所以解析起来就会有问题了,那么解决方案是怎么样呢
我想出一个解决方案就是,通常接口的错误码和数据是分开的,错误码格式都基本一样的,而数据格式却变化不同,所以我们可以写个公共的错误码实体类,然后将数据的实体类分开,再合并起来,形成一个新的实体类,那么是怎样的呢,看下面
/** * API实体类 * 使用泛型进行封装,将请求的结果和数据隔离开,这样,就可以更多类型的数据格式,统一做处理 * * @author ysbing */public class ApiBean<T> implements Serializable { //结果 public int code; //数据 public T data;}
我们将数据的结果和数据分开了,数据我们用一个泛型,这样就可以匹配各种格式的数据了
然后,在要请求中,我们要这样写
public interface APIService { @GET("/service/getIpInfo.php") Call<ApiBean<IpBean>> getIpInfo2(@Query("ip") String ip);}
Call<ApiBean<IpBean>>,我们在配置的时候,除了IpBean不同,其他的,都是一样的了,看,这样就可以解决我们一开始时候的那个问题了
本次教程到此结束,欢迎大家评论
教程例子源码下载
0 0
- Android网络开发框架Retrofit(三:进阶篇,接口实体类封装)
- Android开发之Retrofit进阶封装
- Android网络开发框架Retrofit(一:介绍篇)
- 浅谈Android网络封装框架Retrofit
- Android网络开发框架Retrofit(四:扩展篇,Retrofit+RxJava)
- Android网络请求框架之Retrofit(三)
- Retrofit+Rxjava网络封装框架
- Android开发笔记之retrofit网络框架
- Android 开发之Retrofit网络框架
- 如何封装自己的网络框架 -进阶封装 (RxJava+okHttp+Retrofit)
- Android网络开发框架Retrofit(五:实战篇,实现MVP模式进行开发)
- Android RxJava和Retrofit网络框架封装(一)
- Android开发网络篇Retrofit
- Android网络开发框架Retrofit(二:入门篇,hello, world)
- Android开源网络框架Retrofit(入门篇)
- Android开发---RxJava+Retrofit封装
- Retrofit网络框架的封装使用
- 封装Retrofit + okhttp + rxjava网络请求框架
- Quaternion.LookRotation 注视旋转
- CString分割字符串和截取字符串的成员函数
- GDB技巧整理
- Java基础--------------------------数组--------------------------
- web服务器
- Android网络开发框架Retrofit(三:进阶篇,接口实体类封装)
- 创新工场涂鸦移动测试题-软件工程师
- Android程序设计基础
- (java)Compare Version Numbers
- iOS 创建单例的两种方法
- Linux下管理员权限获取(su和sudo的区别)
- 2015创新工场涂鸦移动测试题-软件工程师
- java基础知识——网络编程、IO流
- PHP原生--截取中文字符串,并生成省略...