改装电话上的响应主体为空

时间:2018-12-11 16:17:55

标签: android post kotlin retrofit2

我有一个可以调用服务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 :(得分:0)

我发现了!

我的邮递员有问题。出于任何原因,我的AVD无法访问模拟服务器。现在,我用一个简单的静态API node.js解决了我的问题。

感谢帮助人员。

答案 1 :(得分:-1)

您的响应包含名为“ userAccount”和“ error”的元素。您的UserAccount类都没有导致此问题的原因。因此,将Retrofit与这样的类一起使用:

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