Невозможно создать адаптер вызова для retrofit2. Ответ <...> - PullRequest
1 голос
/ 19 июня 2020

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
)

Исключение при попытке вызвать API:

java .lang.IllegalArgumentException: невозможно создать адаптер вызова для retrofit2.Response <... data.GetMovieResponse> для метода InstanceApi.getNotShownMovies Невозможно создать адаптер вызова для retrofit2.Response <... data.GetMovieResponse> для метода InstanceApi.getNotShownMovies

* I 1010 *

1011 * Не знаю с чего начать. Все остальные вызовы API работают нормально, что также определено в том же классе API. Может ошибка модели?

1 Ответ

1 голос
/ 19 июня 2020

Просто добавьте модификатор suspend, если используете coroutines. Это решит проблему.

В противном случае проблема, скорее всего, связана с тем, что при создании экземпляра объекта Retrofit не был добавлен адаптер вызова. Например, для RxJava2 вы можете включить адаптер вызова, добавив эту строку при его построении.

.addCallAdapterFactory(RxJava2CallAdapterFactory.createWithScheduler(Schedulers.io()))
...