Ответ OnSuccess не приходит с использованием модернизации в Kotlin - PullRequest
0 голосов
/ 12 октября 2018

Я новичок в Котлине.Я пытаюсь вызвать API с помощью модернизации, и URL-адрес отправляет мне ответ, но где я делаю ошибку в response.body()?Значение не приходит.

Мой ответ JSON: -

{
 "data": {
 "type": "accounts"
 "attributes": {
        "payment-type": "prepaid"
        }
  },
  "included": [
              {
               "type": "a"
               "attributes": {
                   "msn": "0468874507"
                  }
               },
               {
                "type": "b"
                "attributes": {
                     "msn": "38593"
                    }
               }
       ]
}

В DataApi.kt

interface DataApi {

    @GET("dbnjg")
    fun getDataList(): Call<ArrayList<DataValue>>
}

В DataValue.kt

class DataValue {

    @SerializedName("data")
    var data: Data? = null

    @SerializedName("included")
    val included: ArrayList<DataInclude>? = null
}

В ApiClient.kt

fun getApiClient(): Retrofit? {
    if (retrofit == null) {
        retrofit = Retrofit.Builder()
            .baseUrl(BASE_URL)
            .addConverterFactory(GsonConverterFactory.create()).build()
    }
    return retrofit
}

В MainActivity я пытаюсь получить ответ, но не могу получить ответ.Где я что-то упустил или совершил ошибку?

MainActivity.kt

val apiInterface: DataApi = ApiClient().getApiClient()!!.create(DataApi::class.java)

    apiInterface.getDataList().enqueue(object : Callback<ArrayList<DataValue>> {
        override fun onResponse(call: Call<ArrayList<DataValue>>?, response: Response<ArrayList<DataValue>>?) {
            Toast.makeText(baseContext, ""+response?.body()!!, Toast.LENGTH_LONG).show()
            dataValue = response?.body()!!
        }

        override fun onFailure(call: Call<ArrayList<DataValue>>?, t: Throwable?) {

        }

       })

1 Ответ

0 голосов
/ 12 октября 2018

измените свой интерфейс DataApi Вот так:

interface DataApi {
    @GET("dbnjg")
    fun getDataList(): Call<DataValue>
}

и назовите свой API следующим образом:

 apiInterface.getDataList().enqueue(object : Callback<DataValue> { 
    override fun onResponse(call: Call<DataValue>?, response:Response<DataValue>?) {
        Toast.makeText(baseContext, ""+response?.body()!!, Toast.LENGTH_LONG).show()
        dataValue = response?.body()!!
        val includedList=dataValue.included
    }

    override fun onFailure(call: Call<DataValue>?, t: Throwable?) {

    }

   })
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...