Я работаю над проектом Kotlin Android. В моем проекте я использую GraphQL API с помощью клиента Apollo. Я получаю список с сервера. Но размер списка всегда равен нулю в ответном обратном вызове.
У меня есть файл ListEventsQuery.graphql со следующим определением
query listEvents($isUpcoming:Boolean, $isPresent:Boolean, $isPast:Boolean, $count: Int!, $page: Int){
listEvents(
filter:{
is_upcomming: $isUpcoming,
is_past :$isPast,
is_present: $isPresent
},
count: $count, page: $page) {
paginatorInfo {
count
currentPage
firstItem
hasMorePages
lastItem
lastPage
perPage
total
}
data {
id
name
cover
description
start_at
finish_at
is_ready
is_public
code
password
creator {
id
name
email
avatar
}
address {
id
organisation_name
address_line_1
address_line_2
address_line_3
town
postcode
latitude
longitude
country {
id
name
iso2
}
}
created_at
updated_at
areas {
id
name
scenes {
id
name
}
}
}
}
}
У меня также есть класс EventService со следующим определением
class EventService: ApiService(), IEventService
{
override fun getEvents(eventType: Int, numberOfRecords: Int, page: Int) {
var queryBuilder: ListEventsQuery.Builder = ListEventsQuery.builder().page(page).count(numberOfRecords)
getApolloClient(ApplicationController.instance.getLoginAccessToken()).query(queryBuilder.build())
.enqueue(object : ApolloCall.Callback<ListEventsQuery.Data>() {
override fun onResponse(response: Response<ListEventsQuery.Data>) {
var events: ArrayList<EventModel> = ArrayList<EventModel>()
Log.i("RESPONSE_SIZE", "Response size is ${response.data()?.listEvents()?.data()?.size}")
}
override fun onFailure(e: ApolloException) {
e.printStackTrace()
}
})
}
}
Это определение класса ApiService, которое является родителем класса EventService
open class ApiService
{
lateinit var client: ApolloClient
companion object {
var server: String = "staging"
}
private fun getGraphQLServerEndpoint(): String {
return if (server == "staging") "staging url removed" else "production url removed"
}
fun getApolloClient(accessToken: String = ""): ApolloClient {
return ApolloClient.builder()
.serverUrl(getGraphQLServerEndpoint())
.okHttpClient(buildOkHttpClient(accessToken))
.build()
}
private fun buildOkHttpClient(accessToken: String = ""): OkHttpClient {
if (accessToken.isNullOrEmpty()) {
return OkHttpClient()
}
return OkHttpClient.Builder().addInterceptor { chain ->
chain.proceed(
chain.request().newBuilder().addHeader("Authorization", "Bearer $accessToken").build()
)
}.build()
}
}
В методе обратного вызова onResponse класса EventService не вызывается. Вместо этого вызывается метод сбоя. Сообщение об ошибке гласит: «Не удалось проанализировать HTTP-ответ». Я использовал API с помощью GraphQl Playground и Postman, он работает как положено.