retrofit:Unable to create call adapter for class java.lang.Object

环境:使用了retrofit2+协程
原因:Retrofit中未找到Object类相对应的CallAdapter

解决方法:

1 看callAdapterFactory是否添加正确

2 接口方法不能用suspend

interface Api{
    @GET("auth")
    suspend fun getTokenAsync(): Deferred<Bean>
}

改为

interface Api{
    @GET("auth")
   fun getTokenAsync(): Deferred<Bean>
}

原理:retrofit源码中用到动态代理,返回值类型存放在动态代理的method方法中。加了suspend关键字后method.getReturnType恒为Object类型(再问为什么我也不知道了)

retrofit相关文章

你真的会用Retrofit2吗?Retrofit2完全教程
当Retrofit遇上协程
retrofit2-kotlin-coroutines-adapter

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。