我目前正在Android下製作一個應用程序,使我能夠連接一個用戶。我使用普通的android服務器請求。我把我的存儲服務器,看,如果輸入的用戶在BDD當前註冊在一個PHP文件,但它不工作...Android製作服務器請求
這是我的PHP文件:
<?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);
?>
這是我在Java中請求fonction(有用戶:密碼,因爲你需要以存取權限在我的服務器上的任何網頁進行身份驗證)
public static final int CONNECTION_TIMEOUT = 1000 * 15;
public static final String SERVER_ADDRESS = "http://user:[email protected]/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:[email protected]/Android/FetchUserData.php
我甚至試圖在我的Web瀏覽器中對C/C進行C/C處理,並執行該文件。當然,它返回[]是因爲我沒有在我的電話中加入POST。
我完全失去了,因爲android對我來說是相當新的,我真的不知道在哪裏尋找解決方案來解決這個問題......如果有人可以幫助我解決這個問題,將非常感謝: )
乾杯, ASTRUS
我想'的 「http://用戶:[email protected]/Android/」'不一個有效的服務器地址..嘗試使用''「http://62.210.193.223/Android/」' – ELITE
我的建議是檢查如果url是否聯機或之前要打電話在android..try任何瀏覽如果其工作正確。 – ELITE
我試過,我得到了完全相同的問題:/ – Astrus