问题
My Api:
@GET("/cinema/notShownMovies")
fun getNotShownMovies(
@Query("token") token: String
): Response<GetMovieResponse>
@JsonClass(generateAdapter = true)
data class Movie(
val id: Long,
val name: String,
val date: String,
@field:Json(name = "trailer_link")
val trailerLink: String?,
@field:Json(name = "poster_link")
val posterLink: String?,
@field:Json(name = "booked_tickets")
val bookedTickets: Int,
@field:Json(name = "movie_year_id")
val movieYearId: Int,
@field:Json(name = "created_at")
val createdAt: String,
@field:Json(name = "updated_at")
val updatedAt: String,
@field:Json(name = "worker_id")
val workerId: Int?,
@field:Json(name = "worker_name")
val workerName: String?,
@field:Json(name = "emergency_worker_id")
val emergencyWorkerId: Int?,
@field:Json(name = "emergency_worker_name")
val emergencyWorkerName: String?,
@field:Json(name = "booked_tickets_for_yourself")
val bookedTicketsForYourself: Int,
@field:Json(name = "view_movie")
val viewMovie: ViewMovie
)
@JsonClass(generateAdapter = true)
data class ViewMovie(
val href: String,
val method: String
)
Exception when trying to call API:
java.lang.IllegalArgumentException: Unable to create call adapter for retrofit2.Response<...data.GetMovieResponse> for method InstanceApi.getNotShownMovies Unable to create call adapter for retrofit2.Response<...data.GetMovieResponse> for method InstanceApi.getNotShownMovies
I don't know where to start. All other API calls work fine which is also defined in the same API class. Maybe a model error?
回答1:
Just add suspend
modifier if using coroutines
. This will solve the problem.
Otherwise your issue is likely because there is no Call adapter added when instantiating your Retrofit
object.
For example, for RxJava2
, you can include a call adapter by adding this line while building it.
.addCallAdapterFactory(RxJava2CallAdapterFactory.createWithScheduler(Schedulers.io()))
来源:https://stackoverflow.com/questions/62464914/unable-to-create-call-adapter-for-retrofit2-response