Я использую Kotlin и хочу использовать модификацию для использования API imgur, но у меня появляется эта ошибка, когда мой запрос отправляется, и я получаю ответ:
"E / Retrofit: Ожидается BEGIN_ARRAYно был BEGIN_OBJECT по пути $ "
Итак, вот что я получил:
{" data ": [" TY5OVQo "]," success ": true,"status": 200}
Исходя из этого, у меня есть этот класс данных:
@JsonClass(generateAdapter = true)
data class ImgurBasic<T>(@Json(name = "data") val data: T,
@Json(name = "success") val success: Boolean,
@Json(name = "status") val status: Int)
Я использую этот интерфейс, когда я вызвал дооснащение:
interface Imgur {
@GET("3/account/{username}/images/ids")
fun getImages(@Path("username") username: String): Call<List<ImgurBasic<List<String>>>>
}
И как я использую модификацию и моши:
val header = StringBuilder("Bearer ").append(AuthSettings.data!!.accessToken!!).toString()
val client = OkHttpClient.Builder()
client.addInterceptor { chain ->
val original = chain.request()
val requestBuilder = original.newBuilder()
.header("Authorization", header)
val request = requestBuilder.build()
chain.proceed(request)
}
val moshi = Moshi.Builder().add(KotlinJsonAdapterFactory()).build()
val service = Retrofit.Builder()
.baseUrl(baseUrl)
.client(client.build())
.addConverterFactory(MoshiConverterFactory.create(moshi))
.build()
.create(Imgur::class.java)
.getImages(AuthSettings.data!!.accountUsername!!)
.enqueue(object : Callback<List<ImgurBasic<List<String>>>> {
override fun onResponse(call: Call<List<ImgurBasic<List<String>>>>, response: Response<List<ImgurBasic<List<String>>>>) {
val body = response.body()
Log.d("Retrofit", response.message())
Log.d("Retrofit", if (response.isSuccessful) "true" else "false")
if (body != null) {
// Parse data
}
}
override fun onFailure(call: Call<List<ImgurBasic<List<String>>>>, t: Throwable) {
Log.e("Retrofit", t.message) // Error Here
}
})
В моем классе данных я поместил шаблон, потому что данные могут быть различного типа
Заранее спасибо
PS:Извините за мой английский ^^