Java Android发出服务器请求
我目前正在安卓系统下制作一个应用程序,可以连接用户。我使用常规的android服务器请求。我调用了一个存储在我的服务器上的php文件,查看输入的用户当前是否已在BDD中注册,但它根本不起作用 这是我的php文件:Java Android发出服务器请求,java,php,android,Java,Php,Android,我目前正在安卓系统下制作一个应用程序,可以连接用户。我使用常规的android服务器请求。我调用了一个存储在我的服务器上的php文件,查看输入的用户当前是否已在BDD中注册,但它根本不起作用 这是我的php文件: <?php $con = mysqli_connect("localhost", "user", "userpass", "Android"); $username = $_POST["username"]; $password = $_POST["password"] $
<?php
$con = mysqli_connect("localhost", "user", "userpass", "Android");
$username = $_POST["username"];
$password = $_POST["password"]
$statement = mysqli_prepare($con, "SELECT * FROM Utilisateur where username = ? AND password = ?");
mysqli_stmt_bind_param($statement, "ss", $username, $password);
mysqli_stmt_execute($statement);
mysqli_stmt_store_result($statement);
mysqli_stmt_bind_result($statement, $userID, $name, $username, $mail, $password, $adresse, $ville, $zipCode);
$user = array();
while(mysqli_stmt_fetch($statement)){
$user[name] = $name;
$user[username] = $username;
$user[mail] = $mail;
$user[password] = $password;
$user[adresse] = $adresse;
$user[ville] = $ville;
$user[zipCode] = $zipCode;
}
echo json_encode($user);
mysqli_stmt_close($statement);
mysqli_close($con);
?>
我甚至尝试在我的web浏览器中对url进行C/C转换,它会执行该文件。当然,它返回[],因为我的电话中没有包含POST
我完全迷路了,因为android对我来说是一个全新的东西,我真的不知道该去哪里寻找解决这个问题的方法。。。如果有人能帮我解决这个问题,我将不胜感激:)
干杯,
Astrus您似乎正在使用BasicAuth实现HTTP安全性。提供用户名和密码不是为您的请求提供基本凭据的好方法 您需要设置正确的授权标头:
请参阅:您似乎正在使用BasicAuth实现HTTP安全性。提供用户名和密码不是为您的请求提供基本凭据的好方法 您需要设置正确的授权标头:
请参阅:我认为
”http://user:userpassword@62.210.193.223/Android/“
不是有效的服务器地址。。尝试使用”http://62.210.193.223/Android/“
我的建议是在打电话给android之前检查url是否在线。尝试任何浏览是否正常。我尝试了,但我得到了完全相同的问题:/检查它是否在浏览器上工作。如果不是,那么这就是问题所在,链接不仅仅像我在请求中所说的那样,我已经在我的常规网络浏览器ELITE中试用过,效果很好……我认为”http://user:userpassword@62.210.193.223/Android/“
不是有效的服务器地址。。尝试使用”http://62.210.193.223/Android/“
我的建议是在打电话给android之前检查url是否在线。尝试任何浏览是否正常。我尝试了,但我得到了完全相同的问题:/检查它是否在浏览器上工作。如果不是,那么这就是问题所在,链接不仅仅像我在请求中所说的那样,我已经尝试了我的常规网络浏览器精英和它的工作良好…谢谢你的回答。我对安卓相当陌生,所以我还不完全清楚。我应该在我的:URL URL=newurl(SERVER_ADDRESS+“FetchUserData.php”)旁边添加此代码吗;HttpURLConnection conn=(HttpURLConnection)url.openConnection();conn.setRequestMethod(“POST”);还是应该替换代码?阿斯特鲁斯,不客气。如果这是一个好答案,请验证它以关闭您的问题。您只需从服务器地址中删除用户名和密码,并将其放在conn.setRequestMethod(“POST”)后面的代码中;我还没试过,但其他部分一定没问题。谢谢你的回答。我对安卓相当陌生,所以我还不完全清楚。我应该在我的:URL URL=newurl(SERVER_ADDRESS+“FetchUserData.php”)旁边添加此代码吗;HttpURLConnection conn=(HttpURLConnection)url.openConnection();conn.setRequestMethod(“POST”);还是应该替换代码?阿斯特鲁斯,不客气。如果这是一个好答案,请验证它以关闭您的问题。您只需从服务器地址中删除用户名和密码,并将其放在conn.setRequestMethod(“POST”)后面的代码中;我没有试过,但其他部分必须是好的
public static final int CONNECTION_TIMEOUT = 1000 * 15;
public static final String SERVER_ADDRESS = "http://user:userpassword@62.210.193.223/Android/";
public class fetchUserDataAsyncTask extends AsyncTask<Void, Void, User> {
User user;
GetUserCallBack userCallBack;
public fetchUserDataAsyncTask(User user, GetUserCallBack callBack) {
this.user = user;
this.userCallBack = callBack;
}
@Override
protected User doInBackground(Void... params) {
User returnedUser;
try {
URL url = new URL(SERVER_ADDRESS + "FetchUserData.php");
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setRequestMethod("POST");
Uri.Builder builder = new Uri.Builder().appendQueryParameter("username", user.username)
.appendQueryParameter("password", user.password);
String query = builder.build().getEncodedQuery();
OutputStream os = conn.getOutputStream();
BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(os, "UTF-8"));
writer.write(query);
writer.flush();
writer.close();
os.close();
conn.connect();
InputStream in = new BufferedInputStream(conn.getInputStream());
String response = IOUtils.toString(in, "UTF-8");
JSONObject jResponse = new JSONObject(response);
if (jResponse.length() == 0) {
returnedUser = null;
} else {
String name = jResponse.getString("name");
String mail = jResponse.getString("mail");
String adresse = jResponse.getString("adresse");
String ville = jResponse.getString("ville");
int zipCode = jResponse.getInt("zipCode");
returnedUser = new User(name, user.name, user.password, mail, adresse, ville, zipCode);
}
return returnedUser;
} catch (IOException | JSONException e) {
e.printStackTrace();
}
return null;
}
@Override
protected void onPostExecute(User returnedUser) {
progressDialog.dismiss();
userCallBack.done(returnedUser);
super.onPostExecute(returnedUser);
}
}
java.io.FileNotFoundException: http://user:userpassword@62.210.193.223/Android/FetchUserData.php
URLConnection uc = url.openConnection();
String userpass = username + ":" + password;
String basicAuth = "Basic " + new String(new Base64().encode(userpass.getBytes()));
uc.setRequestProperty ("Authorization", basicAuth);