Retrofit使用详解

Retrofit
依赖

compile 'com.squareup.retrofit2:retrofit:2.3.0'
compile 'com.squareup.retrofit2:converter-gson:2.3.0'

定义一个请求接口

public interface MeituService {
    @GET("/users/{user}")
    Call<User> getUser(@Path("user") String userName);
}

使用Retrofit 生成这个接口实例,每个接口的方法都返回一个Call,每个Call只能被调用一次,可以调用clone()拷贝生成新的Call

Retrofit retrofit = new Retrofit.Builder()
    .baseUrl("https://api.github.com/")
    .addConverterFactory(GsonConverterFactory.create())
    .build();
GithubService githubService = retrofit.create(GithubService.class);
                // Call的泛型实参是请求返回的实体
                Call<User> userCall = githubService.getUser("patrick-iv");
                try {
                    Response<User> response = userCall.execute();
                } catch (IOException e) {
                    e.printStackTrace();
                }

用注解描述HTTP请求
- 注解描述请求方法和依赖的URL,描述请求方法的注解有5种GET, POST, PUT, DELETE, and HEAD (@GET)

@GET("users/list?sort=desc")
  • URL支持参数替换和查询参数 (@QUERY,@PATH)
 // {}中参数可以被方法中的同名参数替换,参数名须由数字/字母组成
  @GET("/users/{user}")
 Call<User> getUser(@Path("user") String userName);
 // 添加参数user
 @GET("/users")
 Call<User> getUser(@Query("user") String userName);
 // 多个参数时可以用Map
 @GET("group/{id}/users")
Call<List<User>> groupList(@Path("id") int groupId, @QueryMap Map<String, String> options);
  • 支持对象作为请求体(@Body)
@POST("users/new")
Call<User> createUser(@Body User user);
  • 请求头(@Headers,@Header)
// 设置静态请求头,重复的Header不会被删除
@Headers("Cache-Control: max-age=640000")
@GET("widget/list")
Call<List<Widget>> widgetList();
// 用参数设置请求头,value为空时该请求头会被删除,value会自动被调用toString
@GET("user")
Call<User> getUser(@Header("Authorization") String authorization)

CONVERTERS
Retrofit默认只能返回ResponseBody,用@Body时也只能接收ResponseBody类型。要用其他类型实体需要引入Retrofit适配库
支持以下6种实体
Gson: com.squareup.retrofit2:converter-gson
Jackson: com.squareup.retrofit2:converter-jackson
Moshi: com.squareup.retrofit2:converter-moshi
Protobuf: com.squareup.retrofit2:converter-protobuf
Wire: com.squareup.retrofit2:converter-wire
Simple XML: com.squareup.retrofit2:converter-simplexml
Scalars (primitives, boxed, and String): com.squareup.retrofit2:converter-scalars
自定义CONVERTER,实现Converter.Factory,照以下方式添加使用

Retrofit retrofit = new Retrofit.Builder()
    .baseUrl("https://api.github.com/")
    .addConverterFactory(GsonConverterFactory.create())
    .build();
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值