Retrofit使用教程(一)
Square公司开源了许多优秀的库,Retrofit就是其中之一。
Retrofit是用来简化APP访问服务器API,如果你的服务器使用的使RESTAPI,那么赶紧使用Retrofit吧。
官方的文档是用GitHub的API说明使用过程的,有的童鞋可能从没用过GitHub的API(比如我),为了简单易懂,这里我使用一个查询手机归属地的API来说明Retrofit的使用过程。
集成
目前我使用的是AndroidStudio,那么在model的build.gradle文件中添加以下引用:
1
|
compile 'com.squareup.okhttp3:okhttp:3.2.0'
|
说明:
Retrofit依赖于okhttp,所以需要集成okhttp- API返回的数据为
JSON格式,在此我使用的是Gson对返回数据解析.请使用最新版的Gson butterknife是用来View绑定的,可以不用写那些烦人的findViewById了
返回的数据格式
使用的是百度的API Store提供的API,地址在此:手机号码归属地__API服务_API服务_API Store.
该接口的API主机地址为:http://apis.baidu.com,资源地址为:/apistore/mobilenumber/mobilenumber
需要一个key等于apikey的Header和一个key等于phone的查询关键字,而且该请求为GET请求.
所以我们需要构造一个GET请求,添加一个Header,添加一个Query关键字,访问该API返回的数据格式如下:
1
|
{
|
根据返回结果我们创建数据对象PhoneResult,如下:
1
|
public class PhoneResult {
|
注:AndroidStudio有个插件 GsonFormat可以很方便地将Json数据转为Java对象.
实现过程
构建
首先,按照官方的说明,我们需要创建一个接口,返回Call<PhoneResult>
官方范例:
1
|
public interface GitHubService {
|
这里我们创建一个名为PhoneService的接口,返回值为Call<PhoneResult>,如下:
1
|
public interface PhoneService {
|
首先我们需要填写API的相对地址:/apistore/mobilenumber/mobilenumber
1
|
public interface PhoneService {
|
接着我们要添加一个Header和一个Query关键字,在这里我们需要使用Retrofit提供的注解:
@Header用来添加Header@Query用来添加查询关键字
那么,我们的接口就如下了:
1
|
public interface PhoneService {
|
使用
构建好接口以后,可以使用了!
使用分为四步:
- 创建Retrofit对象
- 创建访问API的请求
- 发送请求
- 处理结果
代码如下所示:
1
|
private static final String BASE_URL = "http://apis.baidu.com";
|
可能会有疑问:第一步中的解析方法GsonConverterFactory.create()是个啥?
官方文档也说明了,这是用来转换服务器数据到对象使用的.该Demo中使用API返回的数据是JSON格式,故此使用Gson来转换,如果服务器返回的是其他类型的数据,则根据需要编写对应的解析方法.
验证
好了,现在可以验证一下了!
编译APP,安装到手机,界面如下:
输入手机号码,然后点击查询按钮,结果如下:
项目代码详见此处:Dev-Wiki/RetrofitDemo




浙公网安备 33010602011771号