Android не подключается к базе данных для проверки имени пользователя и пароля - PullRequest
0 голосов
/ 28 сентября 2018

Итак, это код, который я видел в одном из обучающих видео, и в этом видео приложение работает просто отлично и даже показывает тост входа в систему.Но когда я попытался воспроизвести его, он просто не работает для меня, даже если я ввел правильное имя пользователя и пароль в базу данных.(К вашему сведению, я пробовал на XAMPP с IP-адресом локальной сети пользователя, а также IP-адресом WIFI, а также пытался разместить скрипт php на 000webhost.com, но по-прежнему не работал ни в одном из этих методов)

МОЙ КОД ANDROID:

package com.example.devarsh.googlemapsbustracker;


import android.app.Dialog;
import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

import com.android.volley.AuthFailureError;
import com.android.volley.Request;
import com.android.volley.RequestQueue;
import com.android.volley.Response;
import com.android.volley.VolleyError;
import com.android.volley.toolbox.StringRequest;
import com.android.volley.toolbox.Volley;
import com.google.android.gms.common.ConnectionResult;
import com.google.android.gms.common.GoogleApiAvailability;

import java.util.HashMap;
import java.util.Map;

public class MainActivity extends AppCompatActivity {

private static final String TAG = "MainActivity";
private static final int ERROR_DIALOG_REQUEST = 9001;
private EditText User_name, Pass_word;
private Button btnlogin;
private static String URL_LOGIN = 
"http://192.168.50.127/Android/login.php";


//vars
EditText enroll;


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    btnlogin = findViewById(R.id.button2);
    User_name = findViewById(R.id.username);
    Pass_word = findViewById(R.id.password);

    btnlogin.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            Login();
        }
    });


    isServicesOK();
}

private void Login(){

    String URL = 
"imagebustracker.000webhostapp.com/Android/parul/login.php";
    RequestQueue requestQueue = Volley.newRequestQueue(this);
    StringRequest stringRequest = new StringRequest(Request.Method.POST, URL, new Response.Listener<String>() {
        @Override
        public void onResponse(String response) {

            if(response.trim().equals("success")){
                Toast.makeText(getApplicationContext(), "Login Successfull", Toast.LENGTH_LONG).show();
                Intent intent = new Intent(getApplicationContext(), Selection_Activity.class);
                startActivity(intent);
            }else{
                Toast.makeText(getApplicationContext(), "Login Unsuccessfull", Toast.LENGTH_LONG).show();
            }

        }
    }, new Response.ErrorListener() {
        @Override
        public void onErrorResponse(VolleyError error) {
            Toast.makeText(getApplicationContext(), "Login Unsuccessfull", Toast.LENGTH_LONG).show();
        }
    }) {
        @Override
        protected Map<String, String> getParams() throws AuthFailureError {

            Map<String, String> params = new HashMap<>();
            params.put("UserName", User_name.getText().toString().trim());
            params.put("PassWord", Pass_word.getText().toString().trim());

            return params;
        }
    };

    requestQueue.add(stringRequest);

}


public void isServicesOK() {
    Log.d(TAG, "isServicesOK: checking google services version");

    int available = GoogleApiAvailability.getInstance().isGooglePlayServicesAvailable(this);

    if(available == ConnectionResult.SUCCESS){
        //everything is fine and user can make map request
        Log.d(TAG, "isServicesOK: Google Play Services is working");
    }
    else if(GoogleApiAvailability.getInstance().isUserResolvableError(available)){
        //there is an error but we can fix it
        Log.d(TAG, "isServicesOK: An error is there but we can fix it");
        Dialog dialog = GoogleApiAvailability.getInstance().getErrorDialog(this, available, ERROR_DIALOG_REQUEST);
        dialog.show();
    }else{
        Toast.makeText(this, "We cant make maps request", Toast.LENGTH_SHORT).show();
    }
}

}

В коде Android я просто добавил, что если response.trim (). Равно ("success"), то он начнет новую деятельность, но этоПродолжайте поджаривать. Войти не удалось.

Все усилия по поиску ответа на мой вопрос приветствуются.

Спасибо заранее.

1 Ответ

0 голосов
/ 29 сентября 2018

Прежде всего, протестируйте ваш PHP-скрипт.Поэтому жестко закодируйте переменную username и password, например,

$username = "myUsername"; 
$password = "myPassword";

Убедитесь, что myUsername и myPassword - это данные, которые действительно существуют в вашей базе данных.Оттуда, позвоните по тому же URL в вашем веб-браузере и посмотрите ответ.Это успех или ошибка.

Еще одна вещь, на которую стоит обратить внимание - это чтение кода ответа в приложении Android, когда вы совершаете звонок.Код ответа будет четко определять, взаимодействует ли он с сервисом или нет.Но в вашем случае я бы порекомендовал вам распечатать Volleyerror.

Кроме того, предоставьте мне ссылку, которую вы использовали для этого урока.Иногда полезно иметь двойной взгляд на код.

Как вы уже упоминали, вы сталкиваетесь с тостом 'Login Unsuccessful', это означает, что он попадает в функцию onErrorResponse.Поэтому измените функцию на следующую: -

new Response.ErrorListener() {
        @Override
        public void onErrorResponse(VolleyError error) {
            Toast.makeText(getApplicationContext(), "Login Unsuccessfull", Toast.LENGTH_LONG).show();
            Log.e(TAG, error); //or
            System.println("VolleyError Start: " + error + " : End VolleyError");
        } 

И, пожалуйста, поделитесь ошибкой.Дайте мне знать, если у вас есть какие-либо вопросы.

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