您的位置:首页 > 移动开发 > Android开发

Retrofit2 简述

2016-08-11 14:31 465 查看

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/
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  android