Android 使用改装无法获得错误主体的正确响应
在登录中,实际上我的成功响应在toast上正确显示。但是当键入错误的详细信息时,错误正文响应不会正确显示 这是我的回答--> 我的代码如下:Android 使用改装无法获得错误主体的正确响应,android,json,kotlin,retrofit,retrofit2,Android,Json,Kotlin,Retrofit,Retrofit2,在登录中,实际上我的成功响应在toast上正确显示。但是当键入错误的详细信息时,错误正文响应不会正确显示 这是我的回答--> 我的代码如下: override fun onResponse( call: Call<LoginResponse>, response: Response<LoginResponse> ) { v
override fun onResponse(
call: Call<LoginResponse>,
response: Response<LoginResponse>
) {
var res = response
Log.d("response check ", "" + response.body()?.status.toString())
if (res.body()?.status==200) {
SharedPrefManager.getInstance(applicationContext)
.saveUser(response.body()?.data!!)
val intent = Intent(applicationContext, HomeActivity::class.java)
intent.flags =
Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_CLEAR_TASK
Toast.makeText(
applicationContext,
res.body()?.message,
Toast.LENGTH_LONG
).show()
Log.d("kjsfgxhufb",response.body()?.status.toString())
startActivity(intent)
finish()
}
else
{
try {
val jObjError =
JSONObject(response.errorBody()!!.string())
Toast.makeText(
applicationContext,
jObjError.getJSONObject("user_msg").getString("message"),
Toast.LENGTH_LONG
).show()
} catch (e: Exception) {
Toast.makeText(applicationContext, e.message, Toast.LENGTH_LONG).show()
}
}
事实上,我不想要这样的toast错误消息。我想要简单的消息,如“电子邮件或密码错误,请重试”
请帮助我,谢谢因此,您正在尝试从
“user\u msg”
获取JSONObject,这是不可能的,因为“user\u msg”
不是JSONObject,而是字符串
JSONObject看起来像:
"user_msg": {
"message": "Your error"
}
但事实并非如此,您将得到两个不同的字符串值
"user_msg": "message",
"message" : "another message"
您应该做的是
jObjError.getString(“user\u msg”)
从“user\u msg”
获取值,另一个jObjError.getString(“message”)
从“message”获取值,因此,您正在尝试从“user\u msg”
获取JSONObject,这是不可能的,因为“user\u msg”
不是JSONObject,而是字符串
JSONObject看起来像:
"user_msg": {
"message": "Your error"
}
但事实并非如此,您将得到两个不同的字符串值
"user_msg": "message",
"message" : "another message"
您应该做的是jObjError.getString(“user\u msg”)
从“user\u msg”
获取值,以及另一个jObjError.getString(“message”)
从“message”获取值。您能在这里帮助吗-->您能在这里帮助吗-->