Пустое тело ответа на запрос на модернизацию - PullRequest
0 голосов
/ 11 декабря 2018

У меня есть приложение, которое вызывает службу POST (тест почтальона) и получает некоторую информацию от этого звонка.

Мой инициализатор модернизации:

class RetrofitInitializer {

    private val retrofit = Retrofit.Builder()
        .baseUrl("https://bank-app-test.herokuapp.com/api/")
        .addConverterFactory(GsonConverterFactory.create())
        .build()

    fun loginApiContract() : LoginApiContract{
        return retrofit.create(LoginApiContract::class.java)
    }
}

интерфейс:

interface LoginApiContract {

    @POST("login")
    fun login() : Call<UserAccount>

    @GET("statements")
    fun getStatements()
}

и, наконец, звонок:

val call = RetrofitInitializer().loginApiContract().login()

call.enqueue(object: Callback<UserAccount> {
    override fun onResponse(call: Call<UserAccount?>?,
    response: Response<UserAccount?>?) {
        response?.body()?.let {
            val myUserAccount: UserAccount = it
            loginView.doLogin(myUserAccount)
        }
    }

    override fun onFailure(call: Call<UserAccount?>?,
    t: Throwable?) {
        Log.e("onFailure error", t?.message)
    }
})

Я получил код ответа 200, но тело ответа пусто.

Это мой ответ почтальона:

{
"userAccount": {
    "userId": 1,
    "name": "Jose da Silva Teste",
    "bankAccount": "2050",
    "agency": "012314564",
    "balance": 3.3445
},
"error": {}
}

а это моя модель:

class UserAccount constructor(var userId: Int, var name: String, var bankAccount: String, var agency: String, var balance: Double){

    init{

        this.userId = userId
        this.name = name
        this.bankAccount = bankAccount
        this.agency = agency
        this.balance = balance
    }
}

Ответы [ 2 ]

0 голосов
/ 12 декабря 2018

Я нашел!

Проблема с моим почтальоном.По любой причине мой AVD не может получить доступ к серверу.Теперь я решаю свою проблему с помощью простого успокоительного api node.js.

Спасибо за помощь, ребята.

0 голосов
/ 11 декабря 2018

Ваш ответ содержит элементы с именами «userAccount» и «error».Ваш класс UserAccount не имеет ни того, который вызывает проблему.Поэтому используйте Retrofit с таким классом:

data class UserResponse(val userAccount: UserAccount, val error: BackendError)
...