Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 使用改装无法获得错误主体的正确响应_Android_Json_Kotlin_Retrofit_Retrofit2 - Fatal编程技术网

Android 使用改装无法获得错误主体的正确响应

Android 使用改装无法获得错误主体的正确响应,android,json,kotlin,retrofit,retrofit2,Android,Json,Kotlin,Retrofit,Retrofit2,在登录中,实际上我的成功响应在toast上正确显示。但是当键入错误的详细信息时,错误正文响应不会正确显示 这是我的回答--> 我的代码如下: override fun onResponse( call: Call<LoginResponse>, response: Response<LoginResponse> ) { v

在登录中,实际上我的成功响应在toast上正确显示。但是当键入错误的详细信息时,错误正文响应不会正确显示

这是我的回答-->

我的代码如下:

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”

获取值。您能在这里帮助吗-->您能在这里帮助吗-->