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

Retrofit报错IllegalArgumentException: Unable to create @Body converter解决方案

问题原因
  • Config类中validate字段类型异常:你直接编写val validate = null时,Kotlin会自动推断该字段类型为Nothing?,Gson、Moshi等序列化框架均没有针对Nothing类型的序列化适配器,因此无法生成Config类对应的转换逻辑,直接触发你遇到的报错。这也是你切换序列化框架也无法解决问题的核心原因。
  • 潜在依赖版本不兼容问题:时隔数月重新运行项目,若你没有锁定依赖版本,Gradle可能自动拉取了最新版的Retrofit、GsonConverter等组件,新版本可能存在和旧代码不兼容的逻辑变更。
  • 隐藏的路径参数bug:你在ApiService的getActivityInvite方法中声明了@Path("voiceChannelId")参数,但对应的@POST("api")路径里没有{voiceChannelId}占位符,即使解决了当前序列化报错,后续运行也会抛出路径参数缺失异常。
解决方案
  1. 首先修复validate字段的类型声明,根据接口要求明确指定字段类型,避免Kotlin推断为Nothing?,示例:
// 若接口要求该字段为布尔类型,就显式声明为Boolean?
@SerializedName("validate")
val validate: Boolean? = null

// 若为字符串类型则改为String?,以此类推
  1. 修复路径参数不匹配问题,如果你需要把voiceChannelId拼到请求路径里,就修改POST路径为带占位符的格式:
@POST("api/{voiceChannelId}")

如果不需要把该参数放到路径里,就删掉@Path注解,按照接口实际要求调整传参方式即可。
3. 如果修复以上问题后仍有报错,检查依赖声明,把Retrofit、GsonConverter相关依赖的版本固定为之前功能正常时的版本,避免版本不兼容问题,示例依赖配置:

implementation 'com.squareup.retrofit2:retrofit:2.9.0'
implementation 'com.squareup.retrofit2:converter-gson:2.9.0'
implementation 'com.google.code.gson:gson:2.10.1'

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 16:39:01