首页 > 解决方案 > 使用对象列表改造 POST

问题描述

我尝试使用 Auth 发送帖子。令牌、id 和对象列表(列表)。

data class Passenger(
    @SerializedName("seat")
    @Expose
    var seat: Int = 0,

    @SerializedName("seat_id")
    @Expose
    var seatId: Int = 0,

    @SerializedName("transport_id")
    @Expose
    var transportId: Int = 0,

    @SerializedName("firstname")
    @Expose
    var firstname: String = "",

    @SerializedName("lastname")
    @Expose
    var lastname: String = "",

    @SerializedName("email")
    @Expose
    var email: String = "",

    @SerializedName("phone")
    @Expose
    var phone: String = ""): Serializable
    @POST("/api/booking/new_order")
    fun newOrder(@Header("Authorization") token: String,
                 @Query("route_id") routeId: String,
                 @Body passengers: List<Passenger>): Call<NewOrder>

在此处输入图像描述 响应成功,但我从 Api“缺少乘客数据”中得到错误。我的 #3 响应参数有问题 - 乘客,读取不正确。我在 Postman 及其作品中尝试了这个正确地

我如何需要发送对象列表以进行正确响应?

改造建造者

        val retrofit = Retrofit.Builder()
            .baseUrl(BASE_URL)
            .addConverterFactory(GsonConverterFactory.create())
            .build()
        return retrofit.create(JSONPlaceHolderApi::class.java)
    }

标签: androidkotlinretrofit

解决方案


您可以使用@FieldMap

@POST("/api/booking/new_order")
@FormUrlEncoded
fun newOrder(@Header("Authorization") token: String,
             @Query("route_id") routeId: String,
             @FieldMap passengers: Map<String,Any>): Call<NewOrder>


fun newOrder() {
    val pessengers = mapOf(
      "seat" to "your_seat_num",
      "seat_id" to "your_seat_id")
    webservice.newOrder("your_token","your_route_id", pessengers)
}

推荐阅读