Retrofit2报错:无法为List<MarsPhoto>创建Call适配器的解决方法
解决Retrofit2中无法创建Call Adapter的错误(非协程方案)
错误原因
你直接让接口方法返回List<MarsPhoto>,但Retrofit默认需要用它的Call<T>类型来包裹返回结果——非协程模式下,Retrofit找不到能直接处理集合类型的Call适配器,因此抛出该异常。
解决方案步骤
1. 修改API接口的返回类型
把MarsApiService里的getPhotos方法返回值改成Call<List<MarsPhoto>>,示例代码:
import retrofit2.Call import retrofit2.http.GET interface MarsApiService { @GET("photos") // 替换为你的实际API路径 fun getPhotos(): Call<List<MarsPhoto>> }
2. 确认Retrofit实例配置正确
确保已添加kotlinx.serialization转换器及相关依赖:
依赖配置(build.gradle.kts/build.gradle)
// Retrofit核心依赖 implementation("com.squareup.retrofit2:retrofit:2.9.0") // kotlinx.serialization转换器 implementation("com.jakewharton.retrofit:retrofit2-kotlinx-serialization-converter:0.8.0") // kotlinx.serialization核心库 implementation("org.jetbrains.kotlinx:kotlinx-serialization-json:1.5.1")
Retrofit构建代码
import retrofit2.Retrofit import com.jakewharton.retrofit2.converter.kotlinx.serialization.asConverterFactory import kotlinx.serialization.json.Json import okhttp3.MediaType.Companion.toMediaType val json = Json { ignoreUnknownKeys = true } // 忽略JSON中未定义字段,避免解析失败 val retrofit = Retrofit.Builder() .baseUrl("https://your-api-base-url.com/") // 替换为你的API基地址 .addConverterFactory(json.asConverterFactory("application/json".toMediaType())) .build() val marsApiService = retrofit.create(MarsApiService::class.java)
3. 发起异步请求获取响应
使用Call的enqueue方法处理异步回调(避免阻塞主线程):
marsApiService.getPhotos().enqueue(object : retrofit2.Callback<List<MarsPhoto>> { override fun onResponse(call: Call<List<MarsPhoto>>, response: retrofit2.Response<List<MarsPhoto>>) { if (response.isSuccessful) { val photos = response.body() // 处理获取到的照片列表数据 } else { // 处理HTTP状态码非2xx的请求失败场景 } } override fun onFailure(call: Call<List<MarsPhoto>>, t: Throwable) { // 处理网络错误或请求异常 t.printStackTrace() } })
关键注意点
- 非协程模式下,Retrofit接口方法必须用
Call<T>包裹返回类型,不能直接返回实体类或集合。 - 确保你的
MarsPhoto类已添加@Serializable注解:
import kotlinx.serialization.Serializable @Serializable data class MarsPhoto( val id: String, val img_src: String, // 其他字段根据API返回结构定义 )
内容的提问来源于stack exchange,提问作者Marco
相关产品推荐
相关产品推荐

