0

所以,我正在尝试为我的 android 应用程序实现一个简单的登录。

我有一个 php 文件,它可以进行 SQL 查询并处理如下结果:

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); 

如果用户确实存在于数据库中,则响应被写为“成功”。

可能我没有以最佳方式访问响应内容,所以我正在询问如何正确执行并使其通过条件的建议。

事实:

我可以成功地与数据库通信。如果用户存在,则响应为“成功”。我在显示“成功”的文本视图中编写响应。Log.w,就在 if 语句没有运行之后。

提前谢谢了!

4

2 回答 2

0

对于那些遇到类似问题的人,@Ken Wolf 的回答可以解决问题。

if(response.contains("success")) 
于 2013-07-01T00:37:45.500 回答
0

我迟到了 5 年才回复。

    if (2 == response.getStatusLine().getStatusCode() / 100)
于 2018-03-27T00:17:51.870 回答