用空数组改造 POST
Retrofit POST with empty array
我需要发送一个带有 Retrofit 的 POST:
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
(我认为改造是删除第二个参数,因为数组是空的)。
有什么方法可以发送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
)
希望对大家有所帮助
我需要发送一个带有 Retrofit 的 POST:
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
(我认为改造是删除第二个参数,因为数组是空的)。
有什么方法可以发送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
)
希望对大家有所帮助