- 1、本文档共20页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Retrofi是t 一个不错的网络请求库,用官方自己的介绍就是: A type-safe REST client for Android and Java
看官网的介绍用起来很省事,不过如果不了解它是怎么实现的也不太敢用,不然出问题了就不知道怎么办了。这几天比较闲就下下来看了一下,了解一下大概实现方法,细节就不追究了。先来看一个官网的例子,详细说明去网官看
简单示例
首先定义请求接口,即程序中都需要什么请求操作
publicinterface GitHubService { @GET(/users/{user}/repos)
ListRepolistRepos(@Path(user) String user);
}
然后通过 RestAdapter 生成一个刚才定义的接口的实现类,使用的是动态代理。RestAdapter restAdapter = newRestAdapter.Builder()
.setEndpoint()
.build();
GitHubService service = restAdapter.create(GitHubService.class); 现在就可以调用接口进行请求了
ListRepo repos = service.listRepos(octocat);
使用就是这么简单,请求时直接调用接口就行了,甚至不用封装参数,因为参数
的信息已经在定义接口时通过 Annotatio定n 义好了。
从上面的例子可以看到接口直接返回了需要的Java类型,而不是 byte[或] Strin,g
解析数据的地方就是 Converter,这个是可以自定义的,默认是用 Gson 解析, 也就是说默认认为服务器返回的是 Json数据,可以通过指定不同的 Convert 使用不同的解析方法,如用 Jackson 解析Jso,n 或自定义XmlConvert解析 xml 数据。
Retrofi的t 使用就是以下几步:
定义接口,参数声明,Url都通过 Annotatio指n 定
通过 RestAdapter 生成一个接口的实现类(动态代理)
调用接口请求数据
接口的定义要用用 Rtrofi定t 义的一些 Annotatio,n 所以先看一下 Annotatio的n 。
Annotation
以上面的示例中的接口来看
@GET(/group/{id}/users) ListUsergroupList(@Path(id) int groupId);
先看@GET
/** Make a GET request to a REST path relative to base URL. */ @Documented
@Target(METHOD) @Retention(RUNTIME) @RestMethod(GET) public @interface GET {
String value();
}
@GET 本身也被几个Anotatio注n 解,@Target表示@GET 注解是用于方法的,value
方法就返回这个注解的 value值,在上例中就是/group/{id}/users,然后就是@RestMethod
@Documented @Target(ANNOTATION_TYPE)
@Retention(RUNTIME)
public @interface RestMethod { String value();
boolean hasBody() defaultfalse;
}
RestMethod 是一个用于 Annotatio的n Annotatio,n 比如上面的例子中用来注解的
@GET ,value方法就返回 GET ,hasBody表示是否有Body,对于POST 这个方法就返回 true
@Documented @Target(METHOD) @Retention(RUNTIME)
@RestMethod(value = POST, hasBody = true) public @interface POST {
String value();
}
Retrofi的t
Annotatio包n
含请求方法相关的@GET 、@POST 、@HEAD 、@PUT 、
@DELETA 、@PATCH ,和参数相关的@Path、@Field、@Multipart等。
定义了 Annotatio要n 就有解析它的方法,在 Retrofi中t 解析的位置就是
RestMethodInfo,但在这之前需要先看哪里使用了 RestMethodInfo,前面说了Retrofi使t 用了动态代理生成了我们定义的接口的实现类,而这个实现类是通过RestAdapter.create 返回的,所以使用动态代理的位置就是Res
您可能关注的文档
- 快递业发展现状.docx
- 快递业基础知识.docx
- 快递引起的纠纷和如何查件.docx
- 快递优缺点分析和总结.docx
- 快递之家分析和总结.docx
- 快递资费表分析和总结.docx
- 快件操作的流程.docx
- 快速高效学习英语的方法.docx
- 快速记录会议内容方法技巧.docx
- 快速签单的签单十法.docx
- 原电池电动势的测定实验报告.pdf
- 与业主、设计、总包、监理和他承包人的配合措施.pdf
- 公司管理流程.pptx
- 2024_2025学年新教材高中地理第1章地球的运动素养综合训练新人教版选择性必修1.doc
- 2024_2025学年新教材高中地理第3章大气的运动第1节常见天气系统第1课时锋与天气分层作业新人教版选择性必修1.doc
- 2024_2025学年新教材高中地理第1章地球的运动第2节地球运动的地理意义第4课时正午太阳高度的变化四季更替和五带划分分层作业课件新人教版选择性必修1.pptx
- 2024_2025学年新教材高中地理第2章地表形态的塑造第2节构造地貌的形成第1课时地质构造与地貌课件新人教版选择性必修1.pptx
- 2024_2025学年新教材高中地理第1章地球的运动问题研究人类是否需要人造月亮课件新人教版选择性必修1.pptx
- 五片小雪花课件.pdf
- 2024_2025学年新教材高中地理第3章大气的运动第2节气压带和风带第1课时气压带和风带的形成分层作业课件新人教版选择性必修1.pptx
最近下载
- AE教学设计_90200.doc
- 糖尿病患者教育.pptx VIP
- 人教版五年级劳动与技术下册模拟试题1(含答案).docx VIP
- 2023年辽宁省新高考生物试卷(附答案详解).docx
- 古代汉语(华中师范)中国大学MOOC慕课 2021期末考试答案.docx
- 小小科学家生物试题及评分1-3年级卷.pdf VIP
- DB13T 5945-2024 地面沉降监测分层标施工技术规程.docx
- 新能源汽车检测与故障诊断技术 课件 项目四 充电系统的故障诊断.pptx
- 高一英语课件 B2U4 Reading for Writing:Beautiful Ireland and Its Traditions.pptx
- 南京市联合体2020-2021学年七年级下学期期末数学试卷(含答案解析).docx
文档评论(0)