You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Retrofit请求未返回预期JSON格式响应问题求助

解决API调用未返回JSON响应的问题

先修正代码中的语法错误

你的代码里Log.d("rr")存在语法错误,Android的Log.d()方法需要传入标签和日志内容两个参数,这会导致编译失败。先把代码修正为可正常运行的版本:

login.enqueue(object : Callback<ResponseBody> {
    override fun onFailure(call: Call<ResponseBody>, t: Throwable) {
        // serverLoader.value = false
        Log.d("rr", "请求失败:${t.message}")
    }

    override fun onResponse(call: Call<ResponseBody>, response: Response<ResponseBody>) {
        Log.d("rr", "响应状态码:${response.code()}")
        // 打印响应头里的内容类型
        Log.d("rr", "响应Content-Type:${response.headers()["Content-Type"]}")

        response.body()?.let {
            val responseContent = it.string()
            Log.d("rr", "响应内容:$responseContent")
        } ?: run {
            Log.d("rr", "响应体为空")
        }
    }
})

具体排查方向

  • 验证请求是否成功:通过response.isSuccessful判断请求状态(状态码在200-299区间为成功),如果请求失败,服务器大概率返回错误页(如HTML格式)而非JSON。
  • 确认服务器返回的内容类型:查看打印出的响应头Content-Type,确认是否为application/json。如果不是,说明服务器未返回JSON数据,可能是请求参数错误、接口地址有误或服务器内部异常。
  • 核对请求配置:检查请求的URL、请求方法(GET/POST)、参数格式是否完全符合API文档要求——即便你设置了Content-Type: application/json,参数格式不匹配也会导致服务器返回非JSON响应。
  • 分析响应内容:通过修正后的日志查看实际返回内容(比如HTML错误提示、文本信息),根据具体内容定位问题。

(注:你提供的图片显示了带有"Error"字样的错误页面内容,说明服务器确实返回了非JSON格式的错误响应,建议按上述步骤逐一排查)

内容的提问来源于stack exchange,提问作者Sunil

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 22:40:25