Android是没有连接到数据库,以检查用户名和密码

问题描述 投票:0回答:1

所以这是我在视频教程的人看到一个代码,并在视频应用中工作得很好,甚至显示登录成功的吐司。但是,当我试图复制它,它只是不工作对我来说,即使我把正确的用户名和密码是在数据库中。 (FYI我试着用XAMPP用户的局域网IP以及WIFI IP和还试图主办000webhost.com的PHP脚本,但仍然没有在任何的那个方法工作)

我的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()。等于(“成功”),那么它就会启动一个新的活动,但它保持敬酒登录失败。

所有找到我的问题的答案的努力表示赞赏。

提前致谢。

php android database android-studio xampp
1个回答
0
投票

首先,测试你的PHP脚本。因此,硬编码这样的用户名和密码变量

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

确保名为myUsername,MYPASSWORD是实际在数据库中存在的数据。从那里,调用相同的URL在你的网页浏览器,看看反应。它是一个成功或错误。

还有一件事值得一提的是阅读的响应代码在你的Android应用程序,当你正在通话。响应代码将清楚地确定它甚至与所述业务通信。但是,在你的情况,我建议你打印出Volleyerror。 此外,我提供你使用本教程的链接。有时候好对代码双双眼睛。

正如你刚才提到你与“登录失败”敬酒遇到的,这意味着它击中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");
        } 

并请分享错误。让我知道如果您有任何问题。

© www.soinside.com 2019 - 2024. All rights reserved.