Retrofit2 简述

来源:互联网 发布:洛阳九个人网络 编辑:程序博客网 时间:2024/06/05 09:55

Retrofit 2 是什么

跟Volley,okHttp一样也是一个网络请求的框架,Retrofit只是在OkHttp进行了一次封装,但是Retrofit框架,将网络请求的接口、请求的参数、请求方法、解耦很彻底,适用于Java 和android。

Retrofit 2 为什么出现

1. 性能对比

据说他的效率比volley,okhttp 的还要高。
这是老外做的一个网络请求的性能耗时对比。
这里写图片描述

2. 解耦

在网络层,解耦很彻底。
请求方式,请求参数,都可以用注解来配置。
细节太多就不一一诉说,用一下就知道他的好处啦。

3. 异步处理对比

Volley 请求网络,可以在回调中进行UI更新。
OkHttp 请求网络,不可以在回调中进行UI更新。
Retrofit2 请求网络,可以在回调中进行UI更新。

http://blog.csdn.net/lxcay9/article/details/52182239
说了OkHttp有2个缺点,但是在Retrofit2 里面对OkHttp那2个缺点
1. 比如callback回来是在线程里面, 不能刷新UI,需要我们手动处理。
2. 封装比较麻烦。
进行了修复。

Retrofit 2 怎么使用

首先解释下 Retrofit 2是Retrofit的升级版本,解耦后者比前者更彻底。

1. gradle配置

如果使用Android Studio开发,在gradle里面的dependencies 下面添加
compile ‘com.squareup.retrofit2:retrofit:2.0.0-beta4’
compile ‘com.squareup.retrofit2:converter-gson:2.0.0-beta4’

2. 细节介绍

http://square.github.io/retrofit/ 这是Retrofit 的官网介绍,在阅读相关文章的时候,大家会看到这几个参数。
@Path、@Query、@QueryMap、@Field、@Body、@Part、@Header
这几个参数都是跟HTTP请求参数有关的。可能初见见到我们会觉得很陌生,那么我通个几个小栗子来介绍下这个几个参数的使用。

1.@Path

假设ip地址,都是https://www.sogou.com/
@GET(“users/{user}/repos”)

Call<List<User>> listRepos (@Path("user") String user)

@GET,代表的是get请求。
@Path,代表的是在url地址里面需要添加的一个参数。
如果我们基于Retrofit 访问网络,那么Url地址为:
https://www.sogou.com/ users/{user}/repos,这里的这个user是我们调用listRepos传递的

2.@Query

假设ip地址,都是https://www.sogou.com/
@POST(“mobileLogin/submit.html”) Call Login(@Query(“username”) String uname,@Query(“password”) String pwd);

@POST,代表的是post请求
@Query,代表的是键值对的形势提交
如果我们基于Retrofit 访问网络,那么Url地址为:
https://www.sogou.com/mobileLogin/submit.html
如果我们调用Login函数并传递lixaing,123456,那么请求的数据在body里面显示为:
username=lixiang&password=123456。注意:如果请求的时候不允许有null键。
3.@QueryMap

这个是@Query的一个Map的表现形势,在提交的时候可以传递一个Map,进行HTTP交互,最终的展现效果跟@Query一样。注意:如果请求的时候不允许有null键。

4.@Field
这个跟@Query表现形势一样,但是有一点,就是需要在@POST请求之前添加
@FormUrlEncoded,下面是例图:
这里写图片描述
5.@FieldMap
这个跟@QueryMap表现形势一样。
同样也得在请求方式之前添加@FormUrlEncoded,下面是例图:
这里写图片描述
6.@Body
表现形势换为了一个对象。在请求的时候如果参数很多,我们可以吧参数封装为一个body对象提交到服务器。
这里写图片描述
7.@Part
这是上传相关的注解,由于细节比较繁琐,附上一篇Retrofit2的上传&下载的文章
http://blog.csdn.net/qq_21430549/article/details/51212977

好了,Retrofit的简述就完成了。具体细节,详情请百度。
参考自:
http://duanyytop.github.io/archives/
http://square.github.io/retrofit/

0 0
原创粉丝点击