我有一个可以调用服务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
}
}
答案 0 :(得分:0)
我发现了!
我的邮递员有问题。出于任何原因,我的AVD无法访问模拟服务器。现在,我用一个简单的静态API node.js解决了我的问题。
感谢帮助人员。
答案 1 :(得分:-1)
您的响应包含名为“ userAccount”和“ error”的元素。您的UserAccount类都没有导致此问题的原因。因此,将Retrofit与这样的类一起使用:
data class UserResponse(val userAccount: UserAccount, val error: BackendError)