Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/318.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/214.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 用于登录而不是使用截击通过REST发布的参数_Java_Android_Android Volley - Fatal编程技术网

Java 用于登录而不是使用截击通过REST发布的参数

Java 用于登录而不是使用截击通过REST发布的参数,java,android,android-volley,Java,Android,Android Volley,我正在尝试让我的演示登录Android应用程序通过一个Login.php应用程序在我的服务器上的REST登录,该应用程序查询服务器上的本地MySQL数据库 从数据库运行REST查询时,我指定以下JSON数组: { "email": "cnorris@mail.com", "password": "hello" } 然后在回答中,我得到以下结果: { "login": [ { "name": "Chuck", "email": "cnorris

我正在尝试让我的演示登录Android应用程序通过一个Login.php应用程序在我的服务器上的REST登录,该应用程序查询服务器上的本地MySQL数据库

从数据库运行REST查询时,我指定以下JSON数组:

{
    "email": "cnorris@mail.com",
    "password": "hello"
}
然后在回答中,我得到以下结果:

{
  "login": [
    {
      "name": "Chuck",
      "email": "cnorris@mail.com",
      "id": "0"
    }
  ],
  "success": "1",
  "message": "success"
}
然而,在Android中,我得到一个空响应,这与我没有指定JSON数组时得到的响应相同。这就是我的LoginActivity的样子:

package com.dafakamatt.androidregisterandlogin;

import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ProgressBar;
import android.widget.TextView;
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 org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

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

public class LoginActivity extends AppCompatActivity {

    private EditText email, password;
    private Button btn_login;
    private TextView link_regist;
    private ProgressBar loading;
    private static String URL_LOGIN = "http://192.168.69.3/android_register_login/login.php";

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

        loading = findViewById(R.id.loading);
        email = findViewById(R.id.email);
        password = findViewById(R.id.password);
        btn_login = findViewById(R.id.btn_login);
        link_regist = findViewById(R.id.link_regist);

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


                if (!mEmail.isEmpty() || !mPass.isEmpty()) {
                    Login(mEmail, mPass);

                } else {
                    email.setError("Please insert email");
                    password.setError("Please insert password");
                }
            }
        });

        link_regist.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                startActivity(new Intent(LoginActivity.this,RegisterActivity.class));
            }
        });

    }

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

                                    Toast.makeText(LoginActivity.this,
                                            "Success Login. \nYour Name: "
                                                    + name + "\nYour Email: "
                                                    + email, Toast.LENGTH_SHORT)
                                            .show();
                                    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();
                        }
                    }
                },
                new Response.ErrorListener() {
                    @Override
                    public void onErrorResponse(VolleyError error) {
                        loading.setVisibility(View.GONE);
                        btn_login.setVisibility(View.VISIBLE);
                        Toast.makeText(LoginActivity.this, "Error -" + error.toString(), Toast.LENGTH_SHORT).show();
                    }
                }) {
            @Override
            protected Map<String, String> getParams() {
                Map<String, String> params = new HashMap<>();
                params.put("email",email);
                params.put("password",password);
                return params;
            }
        };

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

    }
}
package com.dafakamatt.androidregisterandlogin;
导入android.content.Intent;
导入android.support.v7.app.AppActivity;
导入android.os.Bundle;
导入android.view.view;
导入android.widget.Button;
导入android.widget.EditText;
导入android.widget.ProgressBar;
导入android.widget.TextView;
导入android.widget.Toast;
导入com.android.volley.AuthFailureError;
导入com.android.volley.Request;
导入com.android.volley.RequestQueue;
导入com.android.volley.Response;
导入com.android.volley.VolleyError;
导入com.android.volley.toolbox.StringRequest;
导入com.android.volley.toolbox.volley;
导入org.json.JSONArray;
导入org.json.JSONException;
导入org.json.JSONObject;
导入java.util.HashMap;
导入java.util.Map;
公共类LoginActivity扩展了AppCompatActivity{
私人编辑文本电子邮件,密码;
私人按钮btn_登录;
私有文本视图链接注册;
私家酒吧;
私有静态字符串URL\u登录=”http://192.168.69.3/android_register_login/login.php";
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity\u登录);
加载=findViewById(R.id.loading);
email=findviewbyd(R.id.email);
password=findviewbyd(R.id.password);
btn_login=findviewbyd(R.id.btn_login);
link\u regist=findviewbyd(R.id.link\u regist);
btn_login.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图){
字符串mEmail=email.getText().toString().trim();
字符串mPass=password.getText().toString().trim();
如果(!mEmail.isEmpty()| |!mPass.isEmpty()){
登录(mEmail、mpas);
}否则{
email.setError(“请插入电子邮件”);
password.setError(“请插入密码”);
}
}
});
link_regist.setOnClickListener(新视图.OnClickListener()的链接){
@凌驾
公共void onClick(视图){
startActivity(新意图(LoginActivity.this,RegisterActivity.class));
}
});
}
私有无效登录(最终字符串电子邮件、最终字符串密码){
加载.setVisibility(视图.VISIBLE);
btn_login.setVisibility(View.GONE);
StringRequest StringRequest=新建StringRequest(Request.Method.POST、URL\u登录、,
新的Response.Listener(){
@凌驾
公共void onResponse(字符串响应){
试一试{
JSONObject JSONObject=新JSONObject(响应);
String success=jsonObject.getString(“success”);
JSONArray JSONArray=jsonObject.getJSONArray(“登录”);
如果(成功等于(“1”)){
for(int i=0;i
我猜被重写的getParams()方法没有完成它的工作,因为我做了一些不正确的事情

尝试登录时,我的崩溃日志在此处:

W/System.err: org.json.JSONException: End of input at character 0 of 
        at org.json.JSONTokener.syntaxError(JSONTokener.java:449)
W/System.err:     at org.json.JSONTokener.nextValue(JSONTokener.java:97)
        at org.json.JSONObject.<init>(JSONObject.java:159)
        at org.json.JSONObject.<init>(JSONObject.java:176)
        at com.dafakamatt.androidregisterandlogin.LoginActivity$3.onResponse(LoginActivity.java:83)
        at com.dafakamatt.androidregisterandlogin.LoginActivity$3.onResponse(LoginActivity.java:79)
        at com.android.volley.toolbox.StringRequest.deliverResponse(StringRequest.java:78)
        at com.android.volley.toolbox.StringRequest.deliverResponse(StringRequest.java:30)
        at com.android.volley.ExecutorDelivery$ResponseDeliveryRunnable.run(ExecutorDelivery.java:106)
        at android.os.Handler.handleCallback(Handler.java:790)
        at android.os.Handler.dispatchMessage(Handler.java:99)
        at android.os.Looper.loop(Looper.java:164)
        at android.app.ActivityThread.main(ActivityThread.java:6494)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:438)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:807)

W/System.err:org.json.JSONException:输入结束于的字符0处
位于org.json.JSONTokener.syntaxError(JSONTokener.java:449)
W/System.err:org.json.JSONTokener.nextValue(JSONTokener.java:97)
位于org.json.JSONObject(JSONObject.java:159)
在org.json.J
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.dafakamatt.androidregisterandlogin">

    <uses-permission android:name="android.permission.INTERNET" />

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppThemeLogin"
        android:usesCleartextTraffic="true">
        <activity android:name=".LoginActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity android:name=".RegisterActivity"
            android:theme="@style/AppThemeRegist">

        </activity>
    </application>

</manifest>
<?php

// required headers
header("Access-Control-Allow-Origin: *");
header("Content-Type: application/json; charset=UTF-8");



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

    $json = file_get_contents('php://input');
    $obj = json_decode($json);

    $email  = $obj->{'email'};
    $password = $obj->{'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

$conn = mysqli_connect("localhost", "sql", "P@ssw0rd", "users");

?>
    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";
        return json_encode($result);

        mysqli_close($conn);

    } else {

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

        mysqli_close($conn);

    }