我需要发送一个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=[]
?
谢谢
您可以使用 List
而不是 ArrayList
我终于找到了一个适合我的解决方案。
@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
)
我希望这个可以帮助到别人