如何在Retrofit Android中将ResponseBody转换为JSONObject

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

我正在Android中使用Retrofit调用API。并以 ResponseBody 的形式从 POST 方法获取响应。

我的API调用如下-

@POST("api/auth/store-login")
fun postLoginDetail(@Body userData: RequestBody):Call<ResponseBody>

现在,我想将此调用的响应转换为 JSONObject,以便我可以在代码中使用它。

我做了这个-

    retrofitCall.enqueue(object : Callback<ResponseBody?> {
        override fun onResponse(call: Call<ResponseBody?>, response: Response<ResponseBody?>) {
            Log.e("response","responseNew ${response.body().toString()}")
            val responseBody = JSONObject("{${response.body().toString()}}")
        }

但 Log.e 返回时它不起作用 ->

responseNew okhttp3.ResponseBody$1@6015676
因此它无法转换为 JSON,因为
response.body().to()String
不是字符串或 JSON 格式。

我在 PostMan 中的实际回复是这样的 - {“客户端”:[“客户端1”,“客户端2”],“has_multiple_clients”:true}

android json kotlin retrofit httpresponse
1个回答
0
投票

尝试将

response.body().toString()
替换为
response.body?.string()
但请确保保存结果,因为
.string()
在被调用后会清除信息,使得以后对 response.body 的调用不会返回任何结果

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