Android网络访问之Retrofit使用教程

  interface PersonService {

  //接口1:https://www.baidu.com/person.json

  @GET("person.json") //表示发起的是GET请求,传入请求的地址(相对路径,重复根路径在后面配置)

  fun getPerson(): Call> //返回值必须声明成Retrofit内置的Call类型,通过泛型指定服务器返回的具体数据类型

  //接口2:https://www.baidu.com//person.json

  @GET("{page}/get_data.json") //使用 {page} 占位

  fun getData(@Path("page") page: Int): Call //使用 @Path("page")注解来声明对应参数

  //接口3:https://www.baidu.com/person.json?u=&t=

  @GET("person.json")

  fun getData(@Query("u") user: String, @Query("t") token: String): Call

  //接口4:https://api.caiyunapp.com/v2/place?query=北京&token={token}&lang=zh_CN

  @GET("v2/place?token=${GlobalApplication.TOKEN}&lang=zh_CN") //不变的参数固定写在GET里

  fun searchPlaces(@Query("query") query: String): Call

  //接口5:https://www.baidu.com/data/

  @DELETE("data/{id}")

  fun deleteData(@Path("id") id: String): Call //该泛型表示能接受任意类型切不会进行解析

  //接口6:https://www.baidu.com/data/create{"id": 1, "content": "The description for this data."}

  @POST("data/create")

  fun createData(@Body data: Data): Call //将Data对象中的数据转换成JSON格式的文本,并放到HTTP请求的body部分

  //接口7:http://example.com/get_data.json

  // User-Agent: okhttp //header参数就是键值对

  // Cache-Control: max-age=0

  //静态声明

  @Headers("User-Agent: okhttp", "Cache-Control: max-age=0")

  @GET("get_data.json")

  fun getData(): Call

  //动态声明

  @GET("get_data.json")

  fun getData(@Header("User-Agent") userAgent: String, @Header("Cache-Control") cacheControl: String): Call

  }