Retrofit学习笔记
Retrofit基础
- Retrofit 中使用注解的方式来区分请求类型,比如@GET("/record")表示一个GET请求,要以 / 开头,会拼接到基本URL后面,record为接口地址。各个格式和含义如下:
例如,GET请求(其他请求类似):
@GET("/apistore/mobilenumber/mobilenumber")
Call<PhoneResult> getResult(@Header("apikey") String apikey, @Query("phone") String phone);
- 服务器接口类型
- 直接请求型
@GET("/record")
Call<PhoneResult> getResult();
组合后直接请求
@GET("/result/{id}") //其中{id}中的id在实际使用时填写实际值即可.
Call<PhoneResult> getResult(@Path("id") String id);
- 带参查询型
@GET("/otn/lcxxcx/query") //某个接口
Call<Result> query(@Query("purpose_codes") String codes);
- 带Header型
@POST("/info")
Call<Object> updateInfo(@Header("device") String device, @Header("version") int version,
@Field("id") String id);
- 注解
1)、Query注解
interface QueryGET{
@GET("/sheet")
String getString(@Query("name")String name,@Query("age") int age);
}
- query 访问的参数会添加到路径(path)的后面。encodeNames=true表示对url的query进行url编码,同理还有encodeValues. 这2个的值默认都是true。
- 实际访问的地址是“http://tieba.baidu.com/sheet?name=xxx&age=xxx ”
2)、Field和Part注解
我们也可以在post请求的时候发送form-data和multipart-data.
表单数据要使用@FormUrlEncoded注解.每一对键值对都要用@Field进行注解, 包括名字和value对象的值.
@FormUrlEncoded
@POST("/user/edit")
User updateUser(@Field("first_name") String first, @Field("last_name") String last);
用@Multipart注解来发送multipart-data,每一个part用@part注解.
@Multipart
@PUT("/user/photo")
User updateUser(@Part("photo") TypedFile photo, @Part("description") TypedString description);
3)、Header注解
header分为key和value都固定,静态Header注解方法和动态Header注解方法。注意header不会相互覆盖。
- 静态header
interface FixedHeader{
@Headers({ //静态Header,先写好
"Accept: application/vnd.github.v3.full+json",
"User-Agent: Retrofit-Sample-App"
})