Android 使用Kotlin更新2:URL意外更改

Android 使用Kotlin更新2:URL意外更改,android,kotlin,retrofit2,Android,Kotlin,Retrofit2,正在与Kotlin一起使用改型进行Android项目。问题是URL意外更改并抛出422 更具体地说,问题在于改型处理格式化日期的方式。API使用此时间格式: 2019-08-21T05%3A12%3A53Z 在本例中,代表2019年8月21日05:12:53。如您所见,时间值的分隔符是%3A 这是我正在使用的界面: interface CurrenciesApi { @GET("currencies/sparkline?key=${apiKey}") fun getCurre

正在与Kotlin一起使用改型进行Android项目。问题是URL意外更改并抛出422

更具体地说,问题在于改型处理格式化日期的方式。API使用此时间格式:

2019-08-21T05%3A12%3A53Z
在本例中,代表2019年8月21日05:12:53。如您所见,时间值的分隔符是
%3A

这是我正在使用的界面:

interface CurrenciesApi {

    @GET("currencies/sparkline?key=${apiKey}")
    fun getCurrenciesSparkline(
        @Query("start") start: String,
        @Query("end") end: String): Call<List<CurrencySparkline>>
}
currencesapi
接口的实现

val api = retrofit.create(CurrenciesApi::class.java)
最后是电话

val start = "2019-08-08T02%3A17%3A59Z"
val end = "2019-09-01T00%3A00%3A00Z"
response: Response<List<CurrencySparkline>> = api
    .getCurrenciesSparkline(start, end)
    .execute()

为什么会发生这种情况,我该如何解决?非常感谢您提供的任何帮助。

在使用预编码字符串时,请使用
@Query(“Query”,encoded=true)
。Docs-指定参数名称和值是否已进行URL编码。是的,这解决了我的问题。非常感谢你的时间和努力!!!
val start = "2019-08-08T02%3A17%3A59Z"
val end = "2019-09-01T00%3A00%3A00Z"
response: Response<List<CurrencySparkline>> = api
    .getCurrenciesSparkline(start, end)
    .execute()
... &start=2019-08-08T02%253A17%253A59Z&end=2019-09-01T00%253A00%253A00Z ...