初识Retrofit2.0

  • 时间:
  • 浏览:3
  • 来源:uu快3新平台_uu快3诀窍_讨论群

你这些 写法很好理解,将FieldMap拆分成了一三个白多Field

接口中的最好的办法须要要有返回值,这里将我们歌词 歌词 定制的javabean对象传进去即可。

1.设置打印拦截器

1.Retrofit简介

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

Retrofit的构建使用的是构造者模式,指定一三个白多baseUrl,加进一三个白多对象转换器,用于将服务器返回的数据转加进对应实体类对象。构造完成我让你 ,调用create最好的办法就可不须要拿到我们歌词 歌词 的接口实例。但会 再调用我们歌词 歌词 我让你 定义好的获取城市的最好的办法,得到一三个白多call对象,通过call.enqueue即可完成异步的网络请求。最后在数据请求成功的我让你 ,通过response.body()即可拿到我们歌词 歌词 定义在Call< T >中须要返回的对象,数据请求失败的我让你 ,进行异常的处里。

许多的代码与前面的保持一致即可。

Retrofit的灵活与强大远不止你这些 ,比如设置网络缓存,管理cookie,自定义转换器等,我让你 项目含有用到的地方再更新博客。

5.简单封装

3.设置连接与读取超时

2.统一设置headers

首先加进以上引用,这里除了gson以外,还有许多的选着。Retrofit自动转化的核心好多好多 根据服务器返回的json数据定制一三个白多javabean,举个例子:

2.post请求

同样是上方的url,但会 改为post请求,要求提交的参数有一三个白多,userId:60 1,userName:kaikai,没法 们应该如保实现呢:

2.准备工作

许多地方保持不变即可

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

请求网络数据的我让你 ,以上是须要变化的地方,许多的地方保持不变。

Retrofit 2.0支持在每个请求最好的办法的上方加进注解进行设置header:

3.基本使用

加进依赖:

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

单例模式构建的一三个白多ApiWrapper,没法 就没法多每次请求网络数据的我让你 去构建一三个白多retrofit,使用的我让你 也很方便:

3.动态请求url

请求城市的url:

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

但会 其中的userId是动态变化的,请求最好的办法为post,请求参数不变。没法我们歌词 歌词 的url也要进行变化:

4.常用配置

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

这里我们歌词 歌词 选着BODY即可,会打印出网络请求的url,头部信息headers,返回数据bodies所有信息

@Body注解标识的是我们歌词 歌词 的post参数对象,在使用的我让你 是:

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

数据准备:

使用okhttp请求网络数据的我让你 ,我们歌词 歌词 须要把服务器返回的JSON数据手动转加进我们歌词 歌词 的Java对象。而在上文我们歌词 歌词 提到,Retrofit可不须要直接解析JSON数据变成JAVA对象,这也是Retrofit灵活与强大的体现。看看为何实现的

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

服务器返回的很常见的一种数据类型,jsonobject对象上方包括一三个白多jsonarray数组,数组上方包括好多好多 jsonobject对象。我们歌词 歌词 须要拿到的好多好多 你这些 jsonobject里的id与name的。看看定制的javabean该为何写:

HttpLoggingInterceptor 是一三个白多拦截器,用于输出网络请求和结果的 Log,可不须要配置 level 为 BASIC / HEADERS / BODY,查看源码它们级别依次是:

感觉你这些 请求最好的办法灵活性都是很高,须要通过传参来构造一三个白多参数对象。没法@FormUrlEncoded 与 @FieldMap你这些 最好的办法灵活。

设置连接超时以及读取超时,但会 将我们歌词 歌词 设置的拦截器加进进来。最后记得调用Retrofit.Builder()的.client(okHttpClient)最好的办法,将我们歌词 歌词 但会 设置好的okHttpClient关联好。

但会 没法 的麻烦之处好多好多 每次请求都得加进,好多好多 都是了以下的最好的办法:

与之对应的User实体类为:

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

这里有许多须要一阵一阵注意的是:保证我们歌词 歌词 定制的javabean对象的字段要和服务器返回的数据字段一一对应,不然解析会出错

1.get请求

请求城市数据的url为:

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

请求最好的办法为get,请求参数为clientVersion与version,请求数据为城市的id与name,没法使用Retrofit完成数据请求的流程如下: