Java Android Studio登录创建帐户
我在YouTube上学习了一个教程,但我只输入了登录名和创建帐户部分 所以我的问题是,我的程序没有错误,但我无法将新数据插入数据库。我使用wamp作为我的服务器。下面是我向数据库发送请求的类Java Android Studio登录创建帐户,java,php,mysql,Java,Php,Mysql,我在YouTube上学习了一个教程,但我只输入了登录名和创建帐户部分 所以我的问题是,我的程序没有错误,但我无法将新数据插入数据库。我使用wamp作为我的服务器。下面是我向数据库发送请求的类 package com.example.brian.errandangels; import android.app.ProgressDialog; import android.content.Context; import android.os.AsyncTask; import org.a
package com.example.brian.errandangels;
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;
/**
* Created by Brian on 2015/12/31.
*/
public class ServerRequests {
ProgressDialog progressDialog;
public static final int CONNECTION_TIMEOUT=1000 * 15;
public static final String SERVER_ADDRESS = "https://192.168.0.2/";
public ServerRequests(Context context){
progressDialog = new ProgressDialog(context);
progressDialog.setCancelable(false);
progressDialog.setTitle("Processing");
progressDialog.setMessage("Please wait....");
}
public void storeUserDataInBackground(User user, GetUserCallback callback){
progressDialog.show();
new StoreUserDataAsyncTask(user, callback).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> dateToSend = new ArrayList<>();
dateToSend.add(new BasicNameValuePair("name", user.name));
dateToSend.add(new BasicNameValuePair("account", user.account));
dateToSend.add(new BasicNameValuePair("password", user.password));
dateToSend.add(new BasicNameValuePair("phone", user.phone));
dateToSend.add(new BasicNameValuePair("department", user.department));
HttpParams httpRequestParams = new BasicHttpParams();
HttpConnectionParams.setConnectionTimeout(httpRequestParams, CONNECTION_TIMEOUT);
HttpConnectionParams.setSoTimeout(httpRequestParams, CONNECTION_TIMEOUT);
HttpClient Client = new DefaultHttpClient(httpRequestParams);
HttpPost post = new HttpPost(SERVER_ADDRESS + "Register.php");
try {
post.setEntity(new UrlEncodedFormEntity(dateToSend));
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;
}
protected User doInBackground(Void... params) {
ArrayList<NameValuePair> dateToSend = new ArrayList<>();
dateToSend.add(new BasicNameValuePair("account", user.account));
dateToSend.add(new BasicNameValuePair("password", user.password));
HttpParams httpRequestParams = new BasicHttpParams();
HttpConnectionParams.setConnectionTimeout(httpRequestParams, CONNECTION_TIMEOUT);
HttpConnectionParams.setSoTimeout(httpRequestParams, CONNECTION_TIMEOUT);
HttpClient Client = new DefaultHttpClient(httpRequestParams);
HttpPost post = new HttpPost(SERVER_ADDRESS + "FetchUserData.php");
User returnedUser = null;
try {
post.setEntity(new UrlEncodedFormEntity(dateToSend));
HttpResponse httpResponse = Client.execute(post);
HttpEntity entity = httpResponse.getEntity();
String result = EntityUtils.toString(entity);
JSONObject jObject = new JSONObject(result);
if (jObject.length() == 0) {
user = null;
}else {
String name = jObject.getString("name");
String phone = jObject.getString("phone");
String department = jObject.getString("department");
returnedUser = new User(name, phone, department, user.account, user.password);
}
}catch (Exception e){
e.printStackTrace();
}
return returnedUser;
}
@Override
protected void onPostExecute(User returnedUser) {
progressDialog.dismiss();
userCallback.done(returnedUser);
super.onPostExecute(returnedUser);
}
}
}
这是我的php文件
<?php
$con=mysqli_connect("localhost", "root","","seniorproject");
$name = $_POST["name"];
$account = $_POST["account"];
$password = $_POST["password"];
$phone = $_POST["phone"];
$department = $_POST["department"];
$statement = mysqli_prepare($con, "INSERT INTO User (name, account, password, phone, department) VALUES(?, ?, ?, ?, ?) ");
mysqli_stmt_bind_param($statement, "sssss", $name , $account, $password, $phone, $department );
mysqli_stmt_execute($statement);
mysqli_stmt_close($statement);
mysqli_close($con);
?>
这是我在emulator中按create account后的日志,确认192.168.0.2实际上是ip地址,因为错误消息清楚地报告了尝试连接到该端点的超时。您的问题是什么。你有没有收到错误?没有,我没有收到任何错误,但当我单击“创建帐户”时,数据库从未插入任何数据,所以我想知道发生了什么错误,你必须一步一步地检查,问题出在哪里。检查您的php代码。它能工作吗?谢谢我检查了我的IP地址好几次它能工作你能用chrome从设备上打开php脚本吗?如果失败,则设备使用的LAN、子网、网关地址上存在DNS问题。
<?php
$con=mysqli_connect("localhost", "root","","seniorproject");
$name = $_POST["name"];
$account = $_POST["account"];
$password = $_POST["password"];
$phone = $_POST["phone"];
$department = $_POST["department"];
$statement = mysqli_prepare($con, "INSERT INTO User (name, account, password, phone, department) VALUES(?, ?, ?, ?, ?) ");
mysqli_stmt_bind_param($statement, "sssss", $name , $account, $password, $phone, $department );
mysqli_stmt_execute($statement);
mysqli_stmt_close($statement);
mysqli_close($con);
?>
01-01 06:03:38.774 15121-15578/org.pickyou.loginandregisterv1 W/System.err: org.apache.http.conn.ConnectTimeoutException: Connect to /192.168.0.2:443 timed out
01-01 06:03:38.774 15121-15578/org.pickyou.loginandregisterv1 W/System.err: at org.apache.http.conn.scheme.PlainSocketFactory.connectSocket(PlainSocketFactory.java:121)
01-01 06:03:38.774 15121-15578/org.pickyou.loginandregisterv1 W/System.err: at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:144)
01-01 06:03:38.774 15121-15578/org.pickyou.loginandregisterv1 W/System.err: at org.apache.http.impl.conn.AbstractPoolEntry.open(AbstractPoolEntry.java:164)
01-01 06:03:38.774 15121-15578/org.pickyou.loginandregisterv1 W/System.err: at org.apache.http.impl.conn.AbstractPooledConnAdapter.open(AbstractPooledConnAdapter.java:119)
01-01 06:03:38.778 15121-15578/org.pickyou.loginandregisterv1 W/System.err: at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:360)
01-01 06:03:38.778 15121-15578/org.pickyou.loginandregisterv1 W/System.err: at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:555)
01-01 06:03:38.778 15121-15578/org.pickyou.loginandregisterv1 W/System.err: at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:487)
01-01 06:03:38.778 15121-15578/org.pickyou.loginandregisterv1 W/System.err: at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:465)
01-01 06:03:38.778 15121-15578/org.pickyou.loginandregisterv1 W/System.err: at com.example.brian.errandangels.ServerRequests$StoreUserDataAsyncTask.doInBackground(ServerRequests.java:78)
01-01 06:03:38.778 15121-15578/org.pickyou.loginandregisterv1 W/System.err: at com.example.brian.errandangels.ServerRequests$StoreUserDataAsyncTask.doInBackground(ServerRequests.java:49)
01-01 06:03:38.778 15121-15578/org.pickyou.loginandregisterv1 W/System.err: at android.os.AsyncTask$2.call(AsyncTask.java:287)
01-01 06:03:38.778 15121-15578/org.pickyou.loginandregisterv1 W/System.err: at java.util.concurrent.FutureTask.run(FutureTask.java:234)
01-01 06:03:38.778 15121-15578/org.pickyou.loginandregisterv1 W/System.err: at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:230)
01-01 06:03:38.778 15121-15578/org.pickyou.loginandregisterv1 W/System.err: at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1080)
01-01 06:03:38.778 15121-15578/org.pickyou.loginandregisterv1 W/System.err: at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:573)
01-01 06:03:38.778 15121-15578/org.pickyou.loginandregisterv1 W/System.err: at java.lang.Thread.run(Thread.java:856)