首页 > 解决方案 > 如何为 get 方法编写数组的改造查询?

问题描述

我正在处理

@GET("match-details/5-days")
fun callMatchDetails(@Query("competition_id[]", encoded = true) competitionIdList: List<String>
): Call<MatchDetailResponseModel>?

这看起来像下面的网址:

https://baseurl.com/match-details/5-days?competition_id[]=1588&competition_id[]=1589&competition_id[]=1592

我如何使它看起来像数组括号中的值,如下所示:

https://baseurl.com/match-details/5-days?competition_id[0]=1588&competition_id[1]=1589&competition_id[2]=1592

任何答案或建议表示赞赏。

标签: javaandroidkotlinretrofit2

解决方案


您可以通过三个步骤来做到这一点:

1-使用QueryMap而不是 Query 如下:

 @GET("match-details/5-days")
    fun callMatchDetails(
        @QueryMap(encoded = true) map: Map<String, Int>
    ): Call<MatchDetailResponseModel>?

2- 将您的比赛 id 列表映射到 Map<String,Int> 如下:

        val ids = mutableListOf(123, 134, 156)
        val map = mutableMapOf<String,Int>()
        ids.forEachIndexed { index, id ->
            map["competition_id[$index]"] = id
        }
//mutableMapOf: {competition_id[0]=123, competition_id[1]=134, competition_id[2]=156}

3-将地图发送到 callMatchDetails 有趣,您将使其如下所示:

https://baseurl.com/match-details/5-days?competition_id[0]=123&competition_id[1]=134&competition_id[2]=156

推荐阅读