为了账号安全,请及时绑定邮箱和手机立即绑定

输入正确的登录数据后Logcat显示登录错误

输入正确的登录数据后Logcat显示登录错误

PHP
慕侠2389804 2022-07-16 16:20:23
在 LoginActivity.java 中输入正确数据后,应用程序不会进入下一个活动,进度条不断加载,Logcat 向我显示此“登录”:[],“成功”:“0”,“消息”:“错误”当我在响应中使用Log.d时,看起来我插入了不正确的数据,但我确信它是正确的。我找不到问题出在哪里,我还在学习。下面是一段代码:  private void Login(final String email, final String password){    loading.setVisibility(View.VISIBLE);    btn_login.setVisibility(View.GONE);    StringRequest stringRequest = new StringRequest(Request.Method.POST, URL_LOGIN,            new Response.Listener<String>() {                @Override                public void onResponse(String response) {                    try {                        JSONObject jsonObject = new JSONObject(response);                        String success = jsonObject.getString("success");                        JSONArray jsonArray = jsonObject.getJSONArray("login");                        if(success.equals("1")){                            for (int i = 0; i < jsonArray.length(); i++){                                JSONObject object = jsonArray.getJSONObject(i);                                String name = object.getString("name").trim();                                String email = object.getString("email").trim();                                Intent intent = new Intent(LoginActivity.this, HomeActivity.class);                                intent.putExtra("name", name);                                intent.putExtra("email", email);                                startActivity(intent);                                loading.setVisibility(View.GONE);                            }                        }                    } catch (JSONException e) {                        e.printStackTrace();                        loading.setVisibility(View.GONE);                        btn_login.setVisibility(View.VISIBLE);                        Toast.makeText(LoginActivity.this, "Error " +e.toString(),     Toast.LENGTH_SHORT).show();                    }                    Log.d(TAG, "Info" + response);                }            },
查看完整描述

2 回答

?
繁星淼淼

TA贡献1775条经验 获得超11个赞

StringRequest用于GET请求并发出POST请求,请使用JsonObjectRequest。


将用户名和密码发送到服务器的示例发布请求。


private void login(final String email, final String password) {

    loadingBar.setVisibility(View.VISIBLE);

    loginButton.setVisibility(View.GONE);

    JSONObject jsonObject = new JSONObject();

    try {

        jsonObject.put("username", email);

        jsonObject.put("password", password);

    } catch (JSONException e) {

        e.printStackTrace();

    }

    final JsonObjectRequest jsonObjectRequest = new JsonObjectRequest(Request.Method.POST, URL_LOGIN,

            jsonObject, new Response.Listener<JSONObject>() {

        @Override

        public void onResponse(JSONObject response) {

            try {

                String success = response.getString("success");

                JSONArray jsonArray = response.getJSONArray("login");


                if (success.equals("1")) {

                    for (int i = 0; i < jsonArray.length(); i++) {


                        JSONObject object = jsonArray.getJSONObject(i);


                        String name = object.getString("name").trim();

                        String email = object.getString("email").trim();


                        Intent intent = new Intent(LoginActivity.this,

                                MainActivity.class);

                        intent.putExtra("name", name);

                        intent.putExtra("email", email);

                        startActivity(intent);


                        loadingBar.setVisibility(View.GONE);

                    }

                }

            } catch (JSONException e) {

                e.printStackTrace();

                loadingBar.setVisibility(View.GONE);

                loginButton.setVisibility(View.VISIBLE);

                Toast.makeText(LoginActivity.this, "Error " + e.toString(),

                        Toast.LENGTH_SHORT).show();

            }

            Log.d(TAG, "Info" + response);

        }

    }, new Response.ErrorListener() {

        @Override

        public void onErrorResponse(VolleyError error) {

            error.printStackTrace();

            loadingBar.setVisibility(View.GONE);

            loginButton.setVisibility(View.VISIBLE);

            Toast.makeText(LoginActivity.this, "Error " + error.toString(),

                    Toast.LENGTH_SHORT).show();

        }

    }) {

        @Override

        public Map<String, String> getHeaders() throws AuthFailureError {

            Map<String, String> params = new HashMap<>();

            params.put("Content-Type", "application/json");

            return params;

        }

    };


    // Make the request

    Volley.newRequestQueue(this).add(jsonObjectRequest);

}


查看完整回答
反对 回复 2022-07-16
?
SMILET

TA贡献1796条经验 获得超4个赞

您的登录操作似乎没有成功。当你得到 0 表示成功"login":[],"success":"0","message":"error"
你应该得到"success":"1"。所以,我想你需要再次检查你的数据。

我将向您推荐几点,它们将在处理 API 时为您提供帮助

  1. 始终使用POSTMAN检查您的 API 请求/响应

  2. 使用模型来表示您的响应,而不是JSONObjectJSONArray,..ext。

  3. 使用简单且自定义的 http/https 库。&我会推荐这个

快乐编码


查看完整回答
反对 回复 2022-07-16
  • 2 回答
  • 0 关注
  • 109 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信