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

Android Studio中Retrofit2 POST请求失败无日志,求排查

问题排查与解决方案

1. 先补全错误日志输出

你当前的onFailure方法没有打印任何错误详情,根本没法定位问题,先修改这段代码:

override fun onFailure(call: Call<Response>, t: Throwable) {
    textView.text = "Fail!"
    Log.e("RetrofitError", "请求失败原因: ${t.message}", t)
}

修改后Logcat会输出完整的异常堆栈信息,帮你精准定位问题。

2. 替换localhost为正确地址

Android模拟器里的localhost指向模拟器自身,而你的NestJS服务运行在电脑本地,必须替换地址:

  • 用Android Studio自带模拟器的话,把baseUrl改成http://10.0.2.2:3000/
  • 用真机或第三方模拟器(雷电、蓝叠等),改成你电脑的局域网IP(比如http://192.168.1.105:3000/)

修改ServiceBuilder中的baseUrl:

private val retrofit = Retrofit.Builder()
    .baseUrl("http://10.0.2.2:3000/") // 替换为对应地址
    .addConverterFactory(GsonConverterFactory.create())
    .client(client)
    .build()

3. 将Response类改为data class

Gson解析需要类具备正确的字段映射和构造逻辑,你当前的Response是普通类,改成data class才能让Gson正常解析返回的JSON:

data class Response (
    val cso: String
)

4. 检查网络权限是否添加

在AndroidManifest.xml里确认有没有添加INTERNET权限,没有的话补上:

<uses-permission android:name="android.permission.INTERNET" />

5. 额外校验:请求参数与后端匹配

Postman测试正常的话,确认RequestModel的字段名和后端接口接收的参数名完全一致。如果后端接收的参数名和username不一致,需要用@SerializedName注解指定映射:

import com.google.gson.annotations.SerializedName

data class RequestModel(
    @SerializedName("后端接收的参数名")
    val username: String
)

完成以上修改后重新运行应用,查看Logcat的错误日志,若还有问题可根据日志进一步排查。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 18:35:14