Android Kotlin改装发布请求未发送输入的数据

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

因此,我必须处理POST请求,并将其正文数据从某种形式的输入中获取。该服务的端点是https://someUrl.com/switching-product/switch?orderID=A002&procode=0200011&nip=P19120邮递员返回的响应类似于this

此请求的正文如下:

enter image description here

在这种情况下,我具有用于处理POST请求的接口:

///Endpoint: https://someUrl.com/switching-product/switch?orderID=A002&procode=0200011&nip=P19120

 interface editProductDetail{
    @FormUrlEncoded
    @POST("switch")
    fun editProductDetail(@Query("orderID") orderID: String,
                      @Query("procode") procode: String,
                      @Query("nip") nip : String,

                      @Field("procode_new") procodeNew: String,
                      @Field("item_qty_new") itemQtyNew: String,
                      @Field("item_price_new") itemPriceNew: String,
                      @Field("item_name_new") itemNameNew: String,
                      @Field("total_price_new") totalPriceNew: String): Call<OutstandingOrderDetailPOJODataClassDetailItem>
}

这是我使用的数据类:

 data class OutstandingOrderDetailPOJODataClassDetailItem(

    @field:SerializedName("item_price_new")
    val itemPriceNew: Int? = null,

    @field:SerializedName("item_name_new")
    val itemNameNew: String? = null,

    @field:SerializedName("total_price")
    val totalPrice: Int? = null,

    @field:SerializedName("item_price")
    val itemPrice: Int? = null,

    @field:SerializedName("item_name")
    val itemName: String? = null,

    @field:SerializedName("status_refund")
    val statusRefund: String? = null,

    @field:SerializedName("detail_id")
    val detailId: Int? = null,

    @field:SerializedName("procode_new")
    val procodeNew: String? = null,

    @field:SerializedName("refund_date")
    val refundDate: String? = null,

    @field:SerializedName("request_refund")
    val requestRefund: String? = null,

    @field:SerializedName("procode")
    val procode: String? = null,

    @field:SerializedName("last_update")
    val lastUpdate: String? = null,

    @field:SerializedName("item_qty_new")
    val itemQtyNew: Int? = null,

    @field:SerializedName("order_id")
    val orderId: String? = null,

    @field:SerializedName("total_price_new")
    val totalPriceNew: Int? = null,

    @field:SerializedName("item_qty")
    val itemQty: Int? = null,

    @field:SerializedName("refund")
    val refund: Int? = null
)

如您在上面看到的,主体具有的属性也包含在数据类中。 (此数据类还在使用该服务输入数据的应用程序的相关服务中使用。)>

这是触发POST请求的功能:

NetworkConfig().editOutstandingOrderProductDetailService().editProductDetail(
        selectedOrderId,
        selectedProcode,
        selectedNip,
        procodeNew,
        itemNewQty,
        itemPriceNew,
        itemNewName,
        totalPriceNew

    ).enqueue(object :
        Callback<OutstandingOrderDetailPOJODataClassDetailItem> {
        override fun onFailure(call: Call<OutstandingOrderDetailPOJODataClassDetailItem>, t: Throwable) {
            Log.i("Order", "It Failed!!")

            if (call.isCanceled) {
                Toast.makeText((activity as AppCompatActivity), "Request Aborted", Toast.LENGTH_SHORT).show()

            } else {
                Toast.makeText((activity as AppCompatActivity), t.localizedMessage, Toast.LENGTH_SHORT).show()
            }
        }

        override fun onResponse(
            call: Call<OutstandingOrderDetailPOJODataClassDetailItem>,
            response: Response<OutstandingOrderDetailPOJODataClassDetailItem>
        ) {
            Log.i("Order", "Switching Process done!!!")
            Log.i("Order", "Status: ${response.body()}")
        }
    })

[从上面,它像这样在logCat中打印响应:

enter image description here

我在这里想念什么吗?还是我需要改变?如果有任何我想指出的细节,请告诉我!

因此,我必须处理POST请求,并将其正文数据从某种形式的输入中获取。该服务的端点是https://someUrl.com/switching-product/switch?orderID = A002&procode = 0200011&...

android kotlin retrofit
1个回答
3
投票

您的请求是JSON object,而不是formurl。当您想通过@Field

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