1. 注解类型

Retrofit路径结合的规则
2. 网络请求方法
2.1 Get请求
完整地址:http://mock-api.com/2vKVbXK8.mock/getUserInfo?id=userid
2.1.1 @Query
创建Retrofit实例必须传入baseurl(http://mock-api.com/2vKVbXK8.mock/),在@GET("getUserInfo")注解中的getUserInfo才是需要访问的地址。?后面的是需要传入的参数,使用@Query注解。
以?形式拼接一个参数这种格式时,就使用@Query注解,该注解就是在getUserInfo后面添加?,并且以id=传来的参数userId的形式拼接url。
private Retrofit retrofit;
retrofit = new Retrofit.Builder()
    .baseUrl("http://mock-api.com/2vKVbXK8.mock/")
    .addConverterFactory(GsonConverterFactory.create()) //返回的Json数据进行解析
    .build();
public interface GetApi {
    /**
     * 获取用户信息
     * @return
     * @Query 注解
     */
    @GET("getUserInfo")
    Call<UserInfo> getUserInfo(@Query("id") String userId);
}
 
# 2.1.2 @QueryMap
完整地址:http://mock-api.com/2vKVbXK8.mock/api/getArticalInfo?id=405&page=1
   @GET("api/getArticalInfo")
   fun getArticalInfo(@QueryMap params: Map<String, String>): Call<Info>
   val params = HashMap<String, String>()
   params.put("id", "321")
   params.put("page", "2")
   api.getArticalInfo(params).enqueue(object : Callback<Info> {
       override fun onResponse(call: Call<Info>, response: Response<Info>) {
           TODO("Not yet implemented")
       }
       override fun onFailure(call: Call<Info>, t: Throwable) {
           TODO("Not yet implemented")
       }
   })
 
也可以一个个传递参数
    @GET("api/getArticalInfo")
    fun getArticalInfoSp(@Query("id") id: String, @Query("page") page: String): Call<Info>
 
2.1.3 @Path
完整地址:
- http://mock-api.com/2vKVbXK8.mock/api/getDynamicInfo/1/data
 - http://mock-api.com/2vKVbXK8.mock/api/getDynamicInfo/2/data
 
当要访问的地址由某个参数动态拼接而成时,使用@Path注解,实例中param这里具体填入的内容是后面调用该方法时传入的参数
    @GET("api/getDynamicInfo/{param}/data")
    fun getDynamicInfo(@Path("param") param: Int): Call<ResponseBody>
 
更改baseurl可以使用如下注解:
    @GET("{url}/api/rand.music")
    fun getJsonDataM(
        @Path(value = "url", encoded = true) url: String,
        @Query("sort") sort: String,
        @Query("format") format: String
    ): Call<Data<Info>>
//传入BaseUrl
  val callData = api.getJsonDataM("https://api.uomg.com/", "新歌榜", "json")
 
2.1.4 @Url
当要访问的地址不只是动态的变几个参数,而是整个地址都要变化,甚至是基类地址也要变化时,这种动态地址就要用到@Url注解。
    @GET
    fun getDynamicInfoUrl(@Url url: String): Call<ResponseBody>
 
2.1.5 @Headers(“”)
静态添加头部信息:包含添加单个头部、添加多个头部。通过@Headers(“”)注解,内部以key:value的方式填写内容
访问地址: http://mock-api.com/2vKVbXK8.mock/api/staticHeaderInfo
静态添加单个或多个头部
    @Headers("version:1.1")
    @GET("api/staticHeaderInfo")
    fun getStaticHeadersInfo()
    @Headers("version:1.1", "type:android")
    @GET("api/staticHeaderInfo")
    fun getStaticMoreHeadersInfo()
 
2.1.6 @Header
动态添加单个头部信息
    @GET("api/dynamicHeadersInfo")
    fun getDynamicHeaderInfo(@Header("version") version: String?): Call<ResponseBody?>?
 
2.1.7 @HeaderMap
动态添加多个头部信息, 使用方法和QueryMap一样。










![[Unity][疑难杂症]Mac电脑打开工程unity attempt to write a readonly database](https://img-blog.csdnimg.cn/img_convert/b91fde33040ddfcce2f5d7c76966b570.png)







