そのため、Android アプリに簡単なログインを実装しようとしています。
SQL クエリを作成し、次のような結果を処理する php ファイルがあります。
if($count == 1)
{
echo "success";
}else{
echo "denied";
}
私のAndroidアプリでは、httpリクエストとレスポンスを含む(関連する)コード:
new Thread(new Runnable() {
public void run() {
login();
}
}).start();
void login(){
try{
httpclient=new DefaultHttpClient();
httppost= new HttpPost("http://myurl.com/login.php"); // make sure the url is correct.
//add your data
nameValuePairs = new ArrayList<NameValuePair>(2);
// Always use the same variable name for posting i.e the android side variable name and php side variable name should be similar,
nameValuePairs.add(new BasicNameValuePair("mail",usermail.getText().toString().trim())); // $Edittext_value = $_POST['Edittext_value'];
nameValuePairs.add(new BasicNameValuePair("password",userpass.getText().toString().trim()));
httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
//Execute HTTP Post Request
ResponseHandler<String> responseHandler = new BasicResponseHandler();
final String response = httpclient.execute(httppost, responseHandler);
System.out.println("Response : " + response);
runOnUiThread(new Runnable() {
public void run() {
tv.setText(response);
dialog.dismiss();
}
});
if(response.equals("success")){
Log.w("IF STATEMENT", "VALID");
runOnUiThread(new Runnable() {
public void run() {
Toast.makeText(Login.this,"Login Success", Toast.LENGTH_SHORT).show();
}
});
Intent userPage = new Intent("android.intent.action.UserPage");
startActivity(userPage);
}
問題は、応答を「成功」と比較する if ステートメントが true を返さないことです。
一方、
System.out.println("Response : " + response);
実際にユーザーがデータベースに存在する場合、応答は「成功」として書き込まれます。
おそらく私は最善の方法で応答コンテンツにアクセスしていないので、それを正しく実行して条件を渡す方法についてアドバイスを求めています。
事実:
DB と正常に通信できます。ユーザーが存在する場合、応答は「成功」です。「成功」を表示するテキストビューに応答を書いています。if ステートメントの直後の Log.w は実行されていません。
よろしくお願いします!