You need to enable JavaScript to run this app. Retrofit配置多个@Path参数调用接口报错如何解决
优惠活动
大模型
产品
解决方案
定价
更多

Retrofit配置多个@Path参数调用接口报错如何解决

报错根因

这个问题和你写的@Path路径参数完全没关系,错的是接口方法的返回值配置:
Retrofit默认是没有能力直接把自定义实体类作为接口返回值的,没有添加额外CallAdapter的前提下,接口方法必须返回Call<T>类型,不然就会抛出你遇到的「无法为方法创建对应CallAdapter」的报错。
如果你是想用Kotlin协程简化异步逻辑,只要没给方法加suspend修饰,Retrofit也会按照普通同步方法处理,一样会触发这个报错。

修复方法

你现在的baseUrl、@Path参数拼接逻辑都是对的,不用改,只需要根据你的技术栈调整接口返回值即可:

  • 如果你用传统的Call方式发请求:
    把返回值改成用Call包裹实体类,完整写法:
    @GET("{language_code}/{word}")
    fun getDictionnaryWord(
        @Path("language_code") language : String,
        @Path("word") word : String,
    ) : Call<DictionnaryModelItem>
    
    后续通过这个Call对象发起异步/同步请求就行。
  • 如果你用Kotlin协程发请求(当前Android开发的常规写法):
    先确认你的Retrofit版本≥2.6.0(这个版本之后Retrofit原生支持suspend函数,不需要额外加协程适配器),给方法加上suspend修饰就能保留直接返回实体类的写法:
    @GET("{language_code}/{word}")
    suspend fun getDictionnaryWord(
        @Path("language_code") language : String,
        @Path("word") word : String,
    ) : DictionnaryModelItem
    
    要是你用的Retrofit版本低于2.6.0,就在Retrofit构建链里补上协程的CallAdapter工厂:
    return Retrofit.Builder()
            .baseUrl("https://api.site.dev/api/v2/entries/")
            .addConverterFactory(GsonConverterFactory.create())
            // 追加这一行
            .addCallAdapterFactory(CoroutineCallAdapterFactory())
            .client(okHttp)
            .build()
            .create(ApiInterface::class.java)
    
    注:旧版协程适配器已经过时,优先升级Retrofit版本比手动加适配更稳妥。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.11.03 09:06:01