Retrofit初体验
来源:互联网 发布:网络电视怎么看翡翠台 编辑:程序博客网 时间:2024/05/21 14:52
Retrofit初体验
在代码家的gankio上经常出现关于使用Retrofit的例子,google了一下。Retrofit是一个类型安全的http客户端。听网上说Retrofit和Rx系列更配哦。
首先在AndroidStudio中引入Retrofit的jar包。通过compile'com.squareup.retrofit2:retrofit:2.1.0'
来进行引入。
Retrofit把我们的http api请求封装成接口的方法
public interface GetRandomDatas { @GET("random/data/{category}/{sum}") Call<RandomAndCategoryDatas> listRope(@Path("category") String category, @Path("sum") int sum);}
Retrofit提供了GET、POST、PUT、DELETE、和HEAD 5中注解。分别对应各自的http请求。在使用这些注解时需要输入的是请求的相对路径。
在使用GET注解时可用使用{}和@Path
注解对GET中的内容进行替换例如上面的例子random/data/{category}/{sum}
和方法中的@Path("category") String category, @Path("sum") int sum
使用方法中传入的category和sum去替换路径中的category和sum。在GET注解中可用使用@query作为路径?sort=xx
替代方法。使用Query()
注解后,在GET()
注解中就不用填写查询参数了。对于多查询的情况可用使用QueryMap()
注解进行封装。
在使用POST()
注解时,通过使用@Body()
注解来指定request的body中的内容。
@POST("/users/new")Call<User> createUser(@Body User user);
通过使用@FormUrlEncoded
注解来对发送的内容进行编码。每一个键值对都使用@Field()
注解来表示对应关系。
@FormUrlEncoded@POST("user/edit")Call<User> updateUser(@Field("first_name") String first, @Field("last_name") String last
对于多部分的请求而言在方法上使用@Multipart()
注解来进行说明。每一个部分都使用@Part()
注解来说明。
@Multipart@PUT("user/photo")Call<User> updateUser(@Part("photo") RequestBody photo, @Part("description") RequestBody description)
对于请求头信息有两种使用方式:
- 在方法上标注使用的消息头信息
@Headers
- 在方法的参数中标注是消息头信息
@Header
使用@Headers
注解表示使用的静态的头信息,而使用@Header
注解可用动态的改变头信息。具体的使用方法如下:
@Headers("Cache-Control: max-age=640000")@GET("widget/list")Call<List<Widget>> widgetList();
@Headers({ "Accept: application/vnd.github.v3.full+json", "User-Agent: Retrofit-Sample-App"})@GET("users/{username}")Call<User> getUser(@Path("username") String username);
@GET("user")Call<User> getUser(@Header("Authorization") String authorization)
使用的方式也非常简单:
Retrofit retrofit=new Retrofit.Build() .baseUrl("") .addConverterFactory(GsonConverterFactory.create()) .build()
addConverterFactory(GsonConverterFactory.create())
该方法是添加一个Gson的转换器。然后就可用通过retrofit.create()
方法得到自己所定义的接口的实力,通过调用自己在接口中定义的Call<T t>
方法得到Call的实例,call有两个方法进行http请求分别是execute()
和enqueue()
方法,前者是进行同步请求后者是使用异步请求,在android中推荐使用后面一种方式进行http请求。
- Retrofit初体验
- Retrofit初体验
- Retrofit初体验
- Retrofit初体验
- Retrofit初体验
- Retrofit初体验,复杂数据gson解析
- Android—-Rxjava与Retrofit初体验
- Android-Retrofit初使用
- Retrofit初了解
- Retrofit
- Retrofit
- Retrofit
- Retrofit
- Retrofit
- Retrofit
- Retrofit
- Retrofit
- Retrofit
- 设计模式之禅
- 二级域名解析使用
- openssl-genras命令简单入门
- openssl的x509命令简单入门
- BZOJ2631: tree
- Retrofit初体验
- ANDROID轻量级JSON序列化和反序列化
- hash 算法
- Learn Emacs in 21 Days: day 3 学习笔记
- toolbar的使用姿势
- OOP面向对象编程
- Ubuntu上安装oh-my-zsh
- 扩展欧几里德算法详解
- SharedPreferences的用法及指南