这种url网址如何拼接成android 的Retrofit注解

这是url:

http://127.0.0.1:8080/GateWay.do?gateWay&SERVICE_TYPE=testData&SCHOOLID=1

如何用Retrofit注解写

@GET("GateWay.do")
    Observable<ResponseBody> getTeacherData();

我试了下,这样是可以的,但是这样?gateWay这部分是静态的,你是需要动态的吗?

@GET("GateWay.do?gateWay")
    fun getTeacherData(
        @Query("SERVICE_TYPE") serviceType: String,
        @Query("SCHOOLID") schoolId: Int
    ): Observable<BaseResponse<JsonObject>>

日志如下

E/HttpUtil: https://www.wanandroid.com/GateWay.do?gateWay&SERVICE_TYPE=testData&SCHOOLID=12

猜想你可能需要是动态的,进行如下尝试:

 @GET("GateWay.do?{gateWay}")
    fun getTeacherData(
        @Path("gateWay") pathParam:Int,
        @Query("SERVICE_TYPE") serviceType: String,
        @Query("SCHOOLID") schoolId: Int
    ): Observable<BaseResponse<JsonObject>>

报错:

URL query string "%s" must not have replace block

跟踪源码,得出结论:
Get请求,url问号后不能包含{xxx}。源码是用正则判断的,满足条件直接抛出异常

所以要么你在okHttp拦截器里处理,要么可以在gradle定义不同的接口环境。