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