gpt4 book ai didi

android - 使用Retrofit2 Android将JSONObject发送到发布请求后获取错误响应

转载 作者:行者123 更新时间:2023-12-03 11:01:26 26 4
gpt4 key购买 nike

请求已发送:-

@POST("config")

fun postApi(@Body jsonBody: JSONObject): Call<ResponseBody>

我正在获得如下响应正文:-
{"Response":{"Error":[{"message":"Error parsing JSON: unexpected token: bracket. (15360)\nUnable to infer Temp-Table or dataset schema from JSON Data. (15374)"}]}}

回调方法:-
call?.enqueue(object : Callback<ResponseBody> {

override fun onResponse(call: Call<ResponseBody>, response: Response<ResponseBody>) {
if (response.body() != null) {
Log.e("BASE_URL isSuccess : ", response.isSuccessful.toString())
Log.e("BASE_URL response : ", response.body()!!.string())

} else {
Log.e("failed", response.isSuccessful.toString())
}
}

override fun onFailure(call: Call<ResponseBody>, t: Throwable) {
Log.e("onFailure", t.printStackTrace().toString())
}
})

最佳答案

有两种方法可以解决此问题。

  • 创建POJO(Kotlin中的数据类)类,准备数据,然后将对象传递给函数。您需要像这样更改功能

    @POST("config")
    fun postApi(@Body jsonBody: YourPojoClass): Call<ResponseBody>
    //------^^^^^^------ notice the data type here.
  • 使用JsonObject包中的com.google.gson代替使用JSONObject包中的org.json。它与@Body批注完美配合。因此,如下更改方法参数。

    @POST("config")
    fun postApi(@Body jsonBody: JsonObject): Call<ResponseBody>
    //------^^^^^^------ notice the data type here.

  • 请注意,类名是 JsonObject而不是 JSONObject。第二种方法很简单,因为您不必创建新的POJO类。

    关于android - 使用Retrofit2 Android将JSONObject发送到发布请求后获取错误响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61658901/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com