Мой JSON
ответ сервера обычно такой: [{}]
(Массив объектов), за исключением того, что они устанавливают ошибки для возврата объекта {}
Так что, когда я вызываю, конечно, если есть проблема с ответом ион возвращает объект Я получаю следующую ошибку:
Expected BEGIN_ARRAY but was BEGIN_OBJECT
В моем коде я ожидаю ArrayList
и получаю объект (хотя я не уверен, как с этим справиться? Когда я получаю объектэто означает, что есть проблема с вызовом API, и мне нужно разобраться с тем, что ответили в объекте.
Пример ответа от API:
{
"StatusCode": -7,
"StatusMessage": "Invalid",
"Details": ""
}
Интерфейс APIService ниже:
interface MyAPIService {
@GET("RequestByToken")
fun getCurrentRequestAsync(
@Query("token") token: String
): Deferred<List<CurrentResponse>>
companion object {
operator fun invoke(
connectivityInterceptor: ConnectivityInterceptor
): MyAPIService {
val requestInterceptor = Interceptor { chain ->
//Creates a new URL adding in the CONST'S
val url = chain.request()
.url()
.newBuilder()
.addQueryParameter("format", FORMAT)
.build()
//Creates new Request with the new URL
val request = chain.request()
.newBuilder()
.url(url.toString())
.build()
println(request)
return@Interceptor chain.proceed(request)
}
//Intercepts each http call and adds the url above automatically
val okHttpClient = OkHttpClient.Builder()
.addInterceptor(requestInterceptor)
.addInterceptor(connectivityInterceptor)
.build()
return Retrofit.Builder()
.client(okHttpClient)
.baseUrl(BASE_URL)
.addCallAdapterFactory(CoroutineCallAdapterFactory())
.addConverterFactory(GsonConverterFactory.create())
.build()
.create(MyAPIService::class.java)
}
}
}