Когда все идет хорошо, я могу без проблем извлечь тело из response.body()
.
Хотя на сервере возникает ошибка проверки (в моем случае дублированная электронная почта), она отправляет ошибку на frontend
, и когда я пытаюсь получить доступ к телу ошибки response.errorBody () получена следующая информация:
"E/API Activity: onResponse: PostSalao okhttp3.ResponseBody$1@84d856e"
Я ожидал получить что-то вроде "ошибка: электронная почта уже используется" .
Как выможет видеть на этом видео вкл (10:08), он делает то же самое, что я делаю с моим кодом, но он корректно получает ошибки (10:17).
Чтоя делаю не так?
fun postCliente(cliente: Cliente) {
val TAG = "API Activity"
val apiInterface: ApiInterface
apiInterface = ClientApi.getClient().create(ApiInterface::class.java)
val clientePostCall = apiInterface.postCliente(cliente)
mProgressBar.visibility = View.VISIBLE
clientePostCall.enqueue(object: Callback<Cliente> {
override fun onResponse(call: Call<Cliente>, response: Response<Cliente>) {
mProgressBar.visibility = View.GONE
if(response.isSuccessful){
try {
Toast.makeText(context,"Usuario " + response.body()!!.name + " criado com sucesso.",Toast.LENGTH_SHORT).show()
val backHomeIntent = Intent(context, MainActivity::class.java)
context.startActivity(backHomeIntent)
} catch (e: NullPointerException) {
Toast.makeText(context, "Problem is unknown: ", Toast.LENGTH_SHORT).show()
}
}else {
try {
val errorBody = response.errorBody().toString()
Toast.makeText(context, "Dados incorretos", Toast.LENGTH_SHORT).show()
Log.e(TAG, "onResponse: " + errorBody )
} catch (e: IOException){
Toast.makeText(context, "Problem is unknown: ", Toast.LENGTH_SHORT).show()
}
}
}
override fun onFailure(call: Call<Cliente>, t: Throwable) {
mProgressBar.visibility = View.GONE
Log.e(TAG, "onFailure: " + t.localizedMessage)
}
})
}
Logcat на Android в красном