用空数组改造POST

问题描述 投票:0回答:1

我需要发送一个POST与Retrofit。

Retrofit.Builder()
  .baseUrl(API_BASE_URL)
  .addConverterFactory(
      GsonConverterFactory.create(
          GsonBuilder().serializeNulls().create()
      ))
  .client(okHttpClient)
  .build()

    @POST(endpoint)
    @FormUrlEncoded
    fun partialPickupsDelivery(
            @HeaderMap headers: Map<String, String>,
            @Field("userId") userId: String,
            @Field("purchaseIds[]") purchases: ArrayList<String>
    ): Call<ResponseBody>

服务器正在等待这样的东西。purchaseIds=["1234", "2345", "3456"]

当我试图发送一个空数组(不是空的)时,问题就来了,因为服务器在等待。purchaseIds=[]但我只发送了第一个参数。userId (我认为retrofit是因为数组是空的,所以要删除第二个)。

有什么方法可以将 purchaseIds=[]?

谢谢

android retrofit2
1个回答
0
投票

您可以使用 List 而不是 ArrayList


0
投票

我终于找到了一个适合我的解决方案。

@POST(endpoint)
fun partialPickupsDelivery(
   @HeaderMap headers: Map<String, String>,
   @Body params: HashMap<String, Any>
): Call<ResponseBody?>

哪儿 params 是。

val params = HashMap<String, Any>().apply {
    this["purchaseIds"] = destinationsId
    this["userId"] = deliverId
}

而它的名字是这样的。

val call: Call<ResponseBody> =
      service.partialPickupsDelivery(
          headers,
          params
      )

我希望这个可以帮助到别人

© www.soinside.com 2019 - 2024. All rights reserved.