android-kotlin JsonObject JsonArray 通过 POST 发送请求数据

Posted

技术标签:

【中文标题】android-kotlin JsonObject JsonArray 通过 POST 发送请求数据【英文标题】:android-kotlin JsonObject JsonArray send request data via POST 【发布时间】:2020-11-08 12:54:55 【问题描述】:

我想通过 post 向服务器发送数据请求我想知道如何在数组中添加数据

data class City(
   @SerializedName("cityId")
   val cityId: Int?,
   @SerializedName("detail")
   val detail: List<String?>
)

请求

data class CityRequest(
   @SerializedName("listCity")
   val listCity: List<City?>
)

回应

data class CityResponse(
   @SerializedName("code")
   val code: String?,
   @SerializedName("status")
   val status: Boolean?,
   @SerializedName("message")
   val message: String?
)

API 服务器

@Headers("Content-Type: application/json")
@POST("city")
suspend fun sendCityContent(@Body listCity: CityRequest?): 
Call<CityResponse?>

连接服务 我不知道如何向相关部分添加信息。

private suspend fun sendDataCity(city: List<city?>) 
    val retrofit = clientCity
    val sendDataToServer = retrofit?.create(CityService::class.java)
    val call = sendDataToServer?.sendCityContent(CityRequest(city))
    call?.enqueue(object : Callback<CityResponse?> 
        override fun onResponse(
            call: Call<CityResponse?>, response: Response<CityResponse?>) 
            val getResponse = response.body()
            Timber.tag("SALE_CITY: ").d("code: %s", getResponse?.code)
            Timber.tag("SALE_CITY: ").d("status: %s", getResponse?.status)
            Timber.tag("SALE_CITY: ").d("message: %s", getResponse?.message)
        

        override fun onFailure(call: Call<CityResponse?>, t: Throwable?) 
            t?.printStackTrace()
        

    )

简单的 JSON


"city": [
    
        "cityId": 1,
        "answer": [
            "1"
        ]
    ,
    
        "questionId": 2,
        "answer": [
            "2.1",
            "2.2"
        ]
    
]

接下来我要做什么? 您可以为我提供一个在数组中添加数据的示例吗? 我想要的东西

cityId = 1
detail = "1.1", "1.2"

cityId = 2 
detail = "2.1", "2.2" 

谢谢

【问题讨论】:

你遇到什么样的错误可以在这里发布错误? 我不知道如何添加数据。因为是两层数组 您在执行上述代码后一定遇到了一些错误或其他问题,发布或明确说明您的服务器接受什么格式以及您有什么格式 【参考方案1】:

我可以从您的请求中看到的一个问题是密钥与您发送的内容不同可能会有所不同,请检查一下。它应该是city 而不是listCity

data class CityRequest(
   @SerializedName("city")
   val city: List<City?>
)

你的城市类应该有这些键answer,你提到过details

data class City(
   @SerializedName("cityId")
   val cityId: Int?,
   @SerializedName("answer")
   val answer: List<String?>
)

我猜你只是发送了错误的密钥,这可能是服务器不接受请求的原因。进行上述更改,如果出现错误,它应该可以发布。

【讨论】:

我需要一个添加数据的例子 cityId = 1 detail = "1.1", "1.2" cityId = 1 detail = "1.1", "1.2"

以上是关于android-kotlin JsonObject JsonArray 通过 POST 发送请求数据的主要内容,如果未能解决你的问题,请参考以下文章

工具栏中的问题设置颜色(android-kotlin)

Android-Kotlin在Fragment获取View

如何摆脱 Android-Kotlin 中的 `Unresolved reference: NavController` 错误?

Android-Kotlin-配置/入门

Android-Kotlin-单例模式

Android-Kotlin-枚举enum