Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/262.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 Android Studio注册表_Java_Php_Android_Android Studio - Fatal编程技术网

Java Android Studio注册表

Java Android Studio注册表,java,php,android,android-studio,Java,Php,Android,Android Studio,我正在为用户创建一个有效的注册页面。当我点击注册按钮时,它会将我带到登录页面,这很好,但它不会将用户信息保存到我的数据库中。数据库连接很好,我检查了很多次,但是当我尝试从我的应用程序注册用户时,信息没有进入数据库,这意味着我无法登录。我还在我的数据库中插入了一个用户,试图从我的应用程序登录,但仍然无法工作。我不确定问题是从哪里来的。我使用000webhost是因为我下面的教程说它是必需的。我保存了我的注册文件、fetchuserdata文件和登录文件,并对php代码进行了双重检查,但它仍然不适用

我正在为用户创建一个有效的注册页面。当我点击注册按钮时,它会将我带到登录页面,这很好,但它不会将用户信息保存到我的数据库中。数据库连接很好,我检查了很多次,但是当我尝试从我的应用程序注册用户时,信息没有进入数据库,这意味着我无法登录。我还在我的数据库中插入了一个用户,试图从我的应用程序登录,但仍然无法工作。我不确定问题是从哪里来的。我使用000webhost是因为我下面的教程说它是必需的。我保存了我的注册文件、fetchuserdata文件和登录文件,并对php代码进行了双重检查,但它仍然不适用于我。有人能帮我吗

register.java:

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;

public class Register extends AppCompatActivity implements View.OnClickListener {

Button bRegister;
EditText etUsername, etPassword;

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

    etUsername = (EditText) findViewById(R.id.etUsername);
    etPassword = (EditText) findViewById(R.id.etPassword);
    bRegister = (Button) findViewById(R.id.bRegister);

    bRegister.setOnClickListener(this);

  }

   @Override
  public void onClick(View v) {
    switch (v.getId()) {
        case R.id.bRegister:

            String username = etUsername.getText().toString();
            String password = etPassword.getText().toString();

            User user = new User(username, password) ;

            registerUser(user);
            break;
    }
}
private void registerUser(User user){
    ServerRequests serverRequests = new ServerRequests(this);
    serverRequests.storeUserDataInBackground(user, new GetUserCallback() {
        @Override
        public void done(User returnedUser) {
            startActivity(new Intent(Register.this, Login.class));
        }
    });
}
}
服务器请求:

import android.app.ProgressDialog;
import android.content.Context;
import android.os.AsyncTask;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.HttpClient;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.params.BasicHttpParams;
import org.apache.http.params.HttpConnectionParams;
import org.apache.http.params.HttpParams;
import org.apache.http.util.EntityUtils;
import org.json.JSONObject;

import java.util.ArrayList;

public class ServerRequests {

ProgressDialog progressDialog;
public static final int CONNECTION_TIMEOUT = 1000 * 15;
public static final String SERVER_ADDRESS = "app.comxa.com";

public ServerRequests(Context context) {

    progressDialog = new ProgressDialog(context);
    progressDialog.setCancelable(false);
    progressDialog.setTitle("Processing");
    progressDialog.setMessage("Please wait...");
}

public void storeUserDataInBackground(User user, GetUserCallback userCallBack) {
    progressDialog.show();
    new StoreUserDataAsyncTask(user, userCallBack).execute();

}

public void fetchUserDataInBackground(User user, GetUserCallback callBack) {
    progressDialog.show();
    new fetchUserDataAsyncTask(user, callBack).execute();
}

public class StoreUserDataAsyncTask extends AsyncTask<Void, Void, Void> {
    User user;
    GetUserCallback userCallBack;

    public StoreUserDataAsyncTask(User user, GetUserCallback userCallBack) {
        this.user = user;
        this.userCallBack = userCallBack;
    }

    @Override
    protected Void doInBackground(Void... params) {

        ArrayList<NameValuePair> dataToSend = new ArrayList<>();
        dataToSend.add(new BasicNameValuePair("username", user.username));
        dataToSend.add(new BasicNameValuePair("password", user.password));

        HttpParams httpRequestsParams = new BasicHttpParams();
        HttpConnectionParams.setConnectionTimeout(httpRequestsParams, CONNECTION_TIMEOUT);
        HttpConnectionParams.setSoTimeout(httpRequestsParams, CONNECTION_TIMEOUT);

        HttpClient client = new DefaultHttpClient(httpRequestsParams);
        HttpPost post = new HttpPost(SERVER_ADDRESS + "Register.php");

        try {
            post.setEntity(new UrlEncodedFormEntity(dataToSend));
            client.execute(post);
        } catch (Exception e) {
            e.printStackTrace();
        }

        return null;
    }

    @Override
    protected void onPostExecute(Void aVoid) {

        progressDialog.dismiss();
        userCallBack.done(null);
        super.onPostExecute(aVoid);
    }
}

public class fetchUserDataAsyncTask extends AsyncTask<Void, Void, User> {
    User user;
    GetUserCallback userCallBack;

    public fetchUserDataAsyncTask(User user, GetUserCallback userCallBack) {
        this.user = user;
        this.userCallBack = userCallBack;
    }

    @Override
    protected User doInBackground(Void... params) {

        ArrayList<NameValuePair> dataToSend = new ArrayList<>();
        dataToSend.add(new BasicNameValuePair("username", user.username));
        dataToSend.add(new BasicNameValuePair("password", user.password));

        HttpParams httpRequestsParams = new BasicHttpParams();
        HttpConnectionParams.setConnectionTimeout(httpRequestsParams, CONNECTION_TIMEOUT);
        HttpConnectionParams.setSoTimeout(httpRequestsParams, CONNECTION_TIMEOUT);

        HttpClient client = new DefaultHttpClient(httpRequestsParams);
        HttpPost post = new HttpPost(SERVER_ADDRESS + "fetchuserdata.php");

        User returnedUser = null;
        try {
            post.setEntity(new UrlEncodedFormEntity(dataToSend));
           HttpResponse httpResponse = client.execute(post);

            HttpEntity entity = httpResponse.getEntity();
            String result = EntityUtils.toString(entity);
            JSONObject jObject = new JSONObject(result);

            if(jObject.length() == 0 ){
              returnedUser = null;
            } else{
                String username = jObject.getString("username");

                returnedUser = new User(user.username, user.password);
            }

        } catch (Exception e) {
            e.printStackTrace();
        }
        return returnedUser;
    }
    @Override
    protected void onPostExecute(User returnedUser) {

        progressDialog.dismiss();
        userCallBack.done(returnedUser);
        super.onPostExecute(returnedUser);
    }
}
}
导入android.app.ProgressDialog;
导入android.content.Context;
导入android.os.AsyncTask;
导入org.apache.http.HttpEntity;
导入org.apache.http.HttpResponse;
导入org.apache.http.NameValuePair;
导入org.apache.http.client.HttpClient;
导入org.apache.http.client.entity.UrlEncodedFormEntity;
导入org.apache.http.client.methods.HttpPost;
导入org.apache.http.impl.client.DefaultHttpClient;
导入org.apache.http.message.BasicNameValuePair;
导入org.apache.http.params.BasicHttpParams;
导入org.apache.http.params.HttpConnectionParams;
导入org.apache.http.params.HttpParams;
导入org.apache.http.util.EntityUtils;
导入org.json.JSONObject;
导入java.util.ArrayList;
公共类服务器请求{
进行对话进行对话;
公共静态最终int连接\u超时=1000*15;
公共静态最终字符串服务器\u ADDRESS=“app.comxa.com”;
公共服务器请求(上下文){
progressDialog=新建progressDialog(上下文);
progressDialog.setCancelable(假);
progressDialog.setTitle(“处理”);
progressDialog.setMessage(“请稍候…”);
}
public void storeUserDataInBackground(用户用户,GetUserCallback userCallBack){
progressDialog.show();
新建StoreUserDataAsyncTask(用户,userCallBack).execute();
}
public void fetchUserDataInBackground(用户用户,GetUserCallback回调){
progressDialog.show();
新建fetchUserDataAsyncTask(用户,回调).execute();
}
公共类StoreUserDataAsyncTask扩展了AsyncTask{
用户;
GetUserCallback-userCallBack;
public StoreUserDataAsyncTask(用户用户,GetUserCallback userCallBack){
this.user=用户;
this.userCallBack=userCallBack;
}
@凌驾
受保护的Void doInBackground(Void…参数){
ArrayList dataToSend=新的ArrayList();
添加(新的BasicNameValuePair(“username”,user.username));
添加(新的BasicNameValuePair(“密码”,user.password));
HttpParams httpRequestsParams=新的BasicHttpParams();
HttpConnectionParams.setConnectionTimeout(httpRequestsParams,连接超时);
HttpConnectionParams.setSoTimeout(httpRequestsParams,连接超时);
HttpClient客户端=新的默认HttpClient(httpRequestsParams);
HttpPost=newhttppost(服务器地址+“Register.php”);
试一试{
post.setEntity(新的UrlEncodedFormEntity(dataToSend));
客户。执行(post);
}捕获(例外e){
e、 printStackTrace();
}
返回null;
}
@凌驾
受保护的void onPostExecute(void避免){
progressDialog.disclose();
userCallBack.done(null);
super.onPostExecute(避免);
}
}
公共类fetchUserDataAsyncTask扩展了AsyncTask{
用户;
GetUserCallback-userCallBack;
公共fetchUserDataAsyncTask(用户用户,GetUserCallback userCallBack){
this.user=用户;
this.userCallBack=userCallBack;
}
@凌驾
受保护的用户doInBackground(无效…参数){
ArrayList dataToSend=新的ArrayList();
添加(新的BasicNameValuePair(“username”,user.username));
添加(新的BasicNameValuePair(“密码”,user.password));
HttpParams httpRequestsParams=新的BasicHttpParams();
HttpConnectionParams.setConnectionTimeout(httpRequestsParams,连接超时);
HttpConnectionParams.setSoTimeout(httpRequestsParams,连接超时);
HttpClient客户端=新的默认HttpClient(httpRequestsParams);
HttpPost=newhttppost(服务器地址+“fetchuserdata.php”);
用户returnedUser=null;
试一试{
post.setEntity(新的UrlEncodedFormEntity(dataToSend));
HttpResponse HttpResponse=client.execute(post);
HttpEntity entity=httpResponse.getEntity();
字符串结果=EntityUtils.toString(实体);
JSONObject jObject=新JSONObject(结果);
if(jObject.length()=0){
returnedUser=null;
}否则{
字符串username=jObject.getString(“用户名”);
returnedUser=新用户(User.username、User.password);
}
}捕获(例外e){
e、 printStackTrace();
}
返回者;
}
@凌驾
PostExecute上受保护的void(用户返回用户){
progressDialog.disclose();
userCallBack.done(returnedUser);
super.onPostExecute(returnedUser);
}
}
}
Register.php:

<?php 
include"conn.php";

$statement = mysqli_prepare($conn, "INSERT INTO users(username, password) VALUES  (?, ?)");
mysqli_stmt_bind_param($statement, "ss", $username , $password);
mysqli_stmt_execute($statement);

mysqli_stmt_close($statement);
mysqli_close($conn);

?>

conn.php:

<?php

$servername = "localhost";
$username = "root";
$password = "";
$dbname = "app";
$msqli_query = ("SELECT * FROM users");

// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);

if($conn == true) {
}

// Check connection 
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
} 
?>


首先,检查请求是否到达服务器。检查您的服务器代码是否良好,请使用rest客户端进行检查。检查android代码是否工作正常,即没有异常。我建议您使用诸如volley或Reformation之类的网络库调用服务器,因为您使用的代码太旧了。如何检查我的服务器代码是否良好?使用诸如Rest Client之类的工具。这是在android studio中吗?不,这是Google chrome扩展。请确认请求是否到达您的服务器。检查您的服务器代码是否正确,检查