初识Retrofit2.0

  • 时间:
  • 浏览:0

这里大伙选则BODY即可,会打印出网络请求的url,头部信息headers,返回数据bodies所有信息

1.设置打印拦截器

数据准备:

使用okhttp请求网络数据的事先,大伙时需把服务器返回的JSON数据手动转加在大伙的Java对象。而在上文大伙提到,Retrofit也能直接解析JSON数据变成JAVA对象,这也是Retrofit灵活与强大的体现。看看为什会么会实现的

与之对应的User实体类为:

请求网络数据的事先,以上是时需变化的地方,时候 的地方保持不变。

服务器返回的很常见的某种 数据类型,jsonobject对象上面包括另还还有一个 jsonarray数组,数组上面包括全都jsonobject对象。大伙时需拿到的全都什么jsonobject里的id与name的。看看定制的javabean该为什会么会写:

3.设置连接与读取超时

@POST标识为post请求,@FormUrlEncoded 与 @FieldMap注解结合表示以表单的措施 传递键值对,与下面这某种 写法是等价的:

设置连接超时以及读取超时,时候 将大伙设置的拦截器加在进来。最后记得调用Retrofit.Builder()的.client(okHttpClient)措施 ,将大伙肯能设置好的okHttpClient关联好。

@Body注解标识的是大伙的post参数对象,在使用的事先是:

时候 的代码与前面的保持一致即可。

3.动态请求url

请求城市的url:

http://111.111.1.11/Base/getCities/id/?clientVersion=208002&version=1622

时候 我我其中的userId是动态变化的,请求措施 为post,请求参数不变。也能大伙的url也要进行变化:

2.统一设置headers

HttpLoggingInterceptor 是另还还有一个 拦截器,用于输出网络请求和结果的 Log,也能配置 level 为 BASIC / HEADERS / BODY,查看源码它们级别依次是:

首先加在以上引用,这里除了gson以外,还有时候 的选则。Retrofit自动转化的核心全都根据服务器返回的json数据定制另还还有一个 javabean,举个例子:

5.简单封装

Retrofit 2.0支持在每个请求措施 的上面加在注解进行设置header:

其中{id}也能理解为占位符,实际使用中会通过@Path注解对所标注的参数进行替换:

这里具体参数以服务器要求而定

单例模式构建的另还还有一个 ApiWrapper,事先就不用每次请求网络数据的事先去构建另还还有一个 retrofit,使用的事先也很方便:

2.准备工作

Retrofit的构建使用的是构造者模式,指定另还还有一个 baseUrl,加在另还还有一个 对象转换器,用于将服务器返回的数据转加在对应实体类对象。构造完成事先,调用create措施 就也能拿到大伙的接口实例。时候 再调用大伙事先定义好的获取城市的措施 ,得到另还还有一个 call对象,通过call.enqueue即可完成异步的网络请求。最后在数据请求成功的事先,通过response.body()即可拿到大伙定义在Call< T >中时需返回的对象,数据请求失败的事先,进行异常的出理 。

接口中的措施 时需要有返回值,这里将大伙定制的javabean对象传进去即可。

你你这俩 写法很好理解,将FieldMap拆分成了另还还有一个 Field

1.Retrofit简介

Retrofit无疑是当下最流行的Android网络请求框架了,是Square提供的开源产品。官方网站是事先介绍Retrofit的—-A type-safe HTTP client for Android and Java,为Android平台的应用提供另还还有一个 类型安全的HTTP客户端。Retrofit 是一套注解形式的网络请求封装库,它的强大在于让代码内外部更加清晰,它也能直接解析JSON数据变成JAVA对象,支持回调操作,出理 不同的结果。

时候 地方保持不变即可

3.基本使用

这里有时候 时需很糙注意的是:保证大伙定制的javabean对象的字段要和服务器返回的数据字段一一对应,不然解析会出错

2.post请求

同样是上面的url,肯能改为post请求,要求提交的参数有另还还有一个 ,userId:801,userName:kaikai,那大伙应该咋样实现呢:

时候 事先的麻烦之处全都每次请求都得加在,全都都是了以下的措施 :

感觉你你这俩 请求措施 灵活性都是很高,时需通过传参来构造另还还有一个 参数对象。也能@FormUrlEncoded 与 @FieldMap你你这俩 措施 灵活。

Retrofit的灵活与强大远不止什么,比如设置网络缓存,管理cookie,自定义转换器等,事先项目蕴含用到的地方再更新博客。

首先加在依赖,进行log的打印

retrofit在使用过程中,时需定义另还还有一个 接口对象,@GET标识为get请求,@GET中所填写的value值和baseUrl组成全版的路径,baseUrl在构造retrofit对象时给出。@QueryMap 标识为接口查询的关键字,这里时需的参数有另还还有一个 ,全都我使用了@QueryMap,与下面你你这俩 写法是等价的:

加在依赖:

在AndroidStudio的项目中,在build.gradle文件中加在以下引用:

4.常用配置

1.get请求

请求城市数据的url为:

http://111.111.1.11/Base/getCities?clientVersion=208002&version=1622

请求措施 为get,请求参数为clientVersion与version,请求数据为城市的id与name,也能使用Retrofit完成数据请求的流程如下: