首页 > 解决方案 > 如何使用改造显示字段缺少来自 api 的错误响应?

问题描述

我正在制作一个登录页面。我所做的是-->

1.当用户输入正确的登录详细信息时-->它将带他到下一个成功的主页

2.当用户输入错误的登录详细信息时-->显示来自API的错误响应,表明电子邮件或密码错误,稍后再试..

所以基本上我想要的是 - >当用户忘记填写电子邮件或密码等字段时,它应该给出来自 API 的响应,如“数据丢失”。

这是我的json:

{
"status": 400,
"message": "Data missing.",
"user_msg": "Data missing"
}

这是我到目前为止所做的代码-->

        loginbtn.setOnClickListener {
        val email = loginuser.text.toString().trim()
        val password = loginpassword.text.toString().trim()

        if (email.isEmpty()) {
            loginuser.error = "Email required"
            loginuser.requestFocus()
            return@setOnClickListener
        }


        if (password.isEmpty()) {
            loginpassword.error = "Password required"
            loginpassword.requestFocus()
            return@setOnClickListener
        }
                  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) {
                     //   when typed right details

                        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
                    {
                         //when typed wrong details
                        try {
                            val jObjError =
                                JSONObject(response.errorBody()!!.string())
                            Toast.makeText(
                                applicationContext,
                                jObjError.getString("message")+jObjError.getString("user_msg"),
                                Toast.LENGTH_LONG
                            ).show()
                        } catch (e: Exception) {
                           Toast.makeText(applicationContext, e.message, Toast.LENGTH_LONG).show()
                            Log.e("errorrr",e.message)
                        }
                    }


                }
            })
            }

因此,当用户忘记填写电子邮件或密码等任何字段时,我想知道上述 json 的逻辑。所以它必须显示吐司中缺少数据。

需要帮助...谢谢

标签: androidkotlinretrofitretrofit2

解决方案


当你得到服务器的响应时,做一件事:

  1. 检查所有输入字段的长度,验证用户是否遗漏了任何字段。
  2. 提示 Toast OR 对话框缺少任何字段。

推荐阅读