带有一个可选参数的Android呼叫改造

时间:2018-12-18 14:20:15

标签: android kotlin retrofit

我想打这样的电话:

/api/basket/info?id={value}-{extra}$&id={value2}

暂时发送如下值:

@GET("/api/basket/info") 
fun getInfo(@Query("id") value: List<String>)

我的问题是如何在查询中将值“ id”用“-”分隔的“多余”传递给我们。

这是我调用api的时间。

    fun getBagInfo(value: List<String>? = null, extra:List<String>? = null){

      val response = api.getBagInfo(value).execute()   }

2 个答案:

答案 0 :(得分:0)

我希望您拥有与api通信的方法。我使用过Java,但是您可以将其转换为Kotlin。

public Call<Object> getBasketInfo(int value1, int[] extraValues, int value2) {
    if (extraValues.length == 0) {
        getBasketInfo(String.valueOf(value1), String.valueOf(value2));
    } else {
        StringBuilder sb = new StringBuilder();
        for (Integer in : extraValues) {
            sb.append("-").append(in);
        }
        getBasketInfo(value1 + sb.toString(), value2 + ""));
    }
}

它将调用:

/api/basket/info?id=1&id=3
/api/basket/info?id=1-2&id=3
/api/basket/info?id=1-2-3&id=3

答案 1 :(得分:0)

我想,在您的情况下,最简单的选择是使用POST而不是GET。您是否有机会更改服务器api? 问题是后端将不接受get请求中的ID列表。因为它具有request.getParameter(id)之类的方法。后端不知道哪个ID。