Как исправить эту ошибку в моей активности входа в систему? - PullRequest
0 голосов
/ 10 апреля 2019

Я пытаюсь создать приложение для Android, и мне нужно войти в систему. Проблема в том, что приложение думает, а не продвигается

Вот моя кнопка входа в систему

btn_login.setOnClickListener(new View.OnClickListener(){
            @Override
            public void onClick(View v){
                String mEmail = email.getText().toString().trim();
                String mPass = password.getText().toString().trim();

                if (!mEmail.isEmpty() || !mPass.isEmpty()){
                   Login(mEmail,mPass);
                }else{
                    email.setError("Insira email");
                    password.setError("Insira palavra-passe");
                }
            }
        });

Вот мой метод входа с помощью stringrequest, я использую Volley Library и JSON.

 private void Login(final String mEmail, final String mPass) {

        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();

                                    Toast.makeText(LoginActivity.this, "Bem-vindo: \n" +name+email,Toast.LENGTH_LONG ).show();

                                    loading.setVisibility(View.GONE);
                                }
                            }

                        }catch(JSONException e){
                            e.printStackTrace();
                            loading.setVisibility(View.GONE);
                            btn_login.setVisibility(View.VISIBLE);
                            Toast.makeText(LoginActivity.this, "Erro: " + e.toString(), Toast.LENGTH_LONG).show();
                        }

                    }
                },
                new Response.ErrorListener() {
                    @Override
                    public void onErrorResponse(VolleyError error) {
                        loading.setVisibility(View.GONE);
                        btn_login.setVisibility(View.VISIBLE);
                        Toast.makeText(LoginActivity.this, "Erro: " + error.toString(), Toast.LENGTH_LONG).show();
                    }
                })
        {
          @Override
          protected Map<String, String> getParams() throws AuthFailureError{
              Map<String, String> params = new HashMap<>();
              params.put("email", mEmail);
              params.put("password", mPass);
              return params;
          }
        };

        RequestQueue requestQueue = Volley.newRequestQueue(this);
        requestQueue.add(stringRequest);

Это мой php код:

if ($_SERVER['REQUEST_METHOD']=='POST') {

    $email = $_POST['email'];
    $password = $_POST['password'];

    require_once 'connect.php';

    $sql = "SELECT * FROM users_table WHERE email='$email' ";

    $response = mysqli_query($conn, $sql);

    $result = array();
    $result['login'] = array();

    if ( mysqli_num_rows($response) === 1 ) {

        $row = mysqli_fetch_assoc($response);

        if ( password_verify($password, $row['password']) ) {

            $index['name'] = $row['name'];
            $index['email'] = $row['email'];
            $index['id'] = $row['id'];

            array_push($result['login'], $index);

            $result['success'] = "1";
            $result['message'] = "success";
            echo json_encode($result);

            mysqli_close($conn);

        } else {

            $result['success'] = "0";
            $result['message'] = "error";
            echo json_encode($result);

            mysqli_close($conn);

        }

    }

}

Мне кажется, ошибка в коде php, потому что индикатор выполнения отображается и никогда не исчезает.

Спасибо за помощь

1 Ответ

0 голосов
/ 10 апреля 2019

Отслеживание в журналах того, что произошло с вызовом API, выполненным в методе Login в Android, вы можете проверить, получили ли вы какой-либо ответ или сделали неправильный вызов API. Также нет ответа, если вы ввели неправильный адрес электронной почты

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...