Retrofit do request to another BASEURL

Android retrofit 调用不同的BASEURL的接口

方法一

1
2
3
4
5
6
7
		@GET("/api/v1/attend/report/student")
    fun getStudentAtt(
                      @Query("imei") imei:String,
                      @Query("page") page:Int,
                      @Query("size") size:Int
      								@Header("Authorization") token: String = App.instance.token
    )

可以写成这样

1
2
3
4
5
6
7
    @GET("http://localhost:8989/api/v1/attend/report/student")
    fun getStudentAtt(
                      @Query("imei") imei:String,
                      @Query("page") page:Int,
                      @Query("size") size:Int
      								@Header("Authorization") token: String = App.instance.token
    )

即直接写完全请求地址即可

方法二

1
2
3
4
5
6
7
8
    @GET
    fun getStudentAtt(
      								@Url url:String,
                      @Query("imei") imei:String,
                      @Query("page") page:Int,
                      @Query("size") size:Int
      								@Header("Authorization") token: String = App.instance.token
    )

然后由外部传入url, 这个方案有个缺陷就是@Url不能像下面的token一样使用默认参数(调用时可不传), 因为@Url不允许在@Query参数之后传入, 而默认参数一般都是要放在最后的.

当然, 网上也有用拦截器实现的, 很明显没有上面两种实用.

Licensed under CC BY-NC-SA 4.0
记录平时瞎折腾遇到的各种问题, 方便查找
使用 Hugo 构建
主题 Stack 3.29.0Jimmy 设计