一.官网给的解释是:Retrofit turns your HTTP API into a Java interface. 大白话就是说retroift是用来调用网络api的接口。利用这个框架,我们就不用去写什么Url,Httpclick之类的Android自带的接口了。 那接下来我们来看看retrofit的使用吧(这里的版本是2.0,如果你是使用之前的版本,可能会有些不同)
大致使用的流程如下:
1.先要定义一个请求接口:
public interface GitHubService{
@GET("/users/{user}/repos")
Call<List<Repo>> listRepo(@Path("user" String user));
}
2.然后是定义retrofit:
Retrofit retrofit=new Retrofit.Builder()
.baseUrl("https://api.github.com"")
.build();
GitHubService service=retrofit.create(GitHubService.class);
3.请求网络api
Call<LIst<Repo>> repo=service.listRepos("cat");
二.Retroift有很多地方使用标签来描述Http请求:
1.变量参数,URL
2.请求body
3.分布式请求body和文件上传
Api介绍
请求是通过标记的接口方法和它的参数来表明,Retroift提供了GET,POST,PUT,DELETE and HEEAD,有用在使用是,使用GET和POST的请求最为普遍,因此这里只介绍这两种的用法,其它的用法就参考官方的文档吧
1.GET: you can also specify query parameters in the URL
@GET("/users/list?sort=desc")
当然了也可以动态的来设置请求参数,用{}来把参数括住
@GET("/group/{id}/users")
List<User> groupList(@Path("id") int groupId)
@GET("/group/{id}/users")
List<User> groupList(@Path("id") int groupId,@Query("sort") String sort)
2.POST方法与GET类似,只是把@GET换为@POST了而已
三.By default, Retrofit can only deserialize HTTP bodies into OkHttp's ResponseBody
type and it can only accept its RequestBody
type for @Body
.
- Gson:
com.squareup.retrofit:converter-gson
- Jackson:
com.squareup.retrofit:converter-jackson
- Moshi:
com.squareup.retrofit:converter-moshi
- Protobuf:
com.squareup.retrofit:converter-protobuf
- Wire:
com.squareup.retrofit:converter-wire
- Simple XML:
com.squareup.retrofit:converter-simplexml