1

私は 3 時間把握しようとした興味深い問題があります.. Android でログイン ページを作成しています。HttpClient を使用してユーザー名とパスワードの値を PHP ページに送信しています。以下のコードが表示されるまで真の結果が得られます。

button_login_submit.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {
                ArrayList<NameValuePair> postParameters = new ArrayList<NameValuePair>();
                postParameters.add(new BasicNameValuePair("username", et_username.getText().toString()));
                postParameters.add(new BasicNameValuePair("password", et_password.getText().toString()));

                String response = null;
                try 
                {
                    response = CustomHttpClient.executeHttpPost("http://10.0.2.2/corner1/login.php", postParameters);
                    String res=response.toString();
                    //here, the value of "res" variable is the exactly what I want. 
                    if(!res.equals("0")) // but in here, the value of "res.equals("0")" is always false. So  the value of inside if is always true!! but why????
                    {
                        if(!res.equals("01"))
                        {
                            tv_login_error.setText("Success");
                            Intent main_page = new Intent(getApplicationContext(), Main_Activity.class);
                            main_page.putExtra("id",res);
                            //startActivity(main_page);
                            //finish();
                        }
                        else
                        {
                            tv_login_error.setText("False Username or Password");
                        }
                    }
                    else
                    {
                        tv_login_error.setText("Please try again using your full usurname or password ");
                    }
                } 
                catch (Exception e) 
                {
                    tv_login_error.setText(e.toString());
                }
            }
        }); 

「res」の変数が「0」の場合、空の値があることを意味します。「01」の場合、ユーザーは存在しません。それ以外の場合、PHP ページからユーザーの ID が送信されます。"res.equals("0") が常に false になるのはなぜですか?

問題が解決しました!!!!問題は、のコードから来る res の値がString res=response.toString();「\n」で来ることです。したがって、値を比較する場合は、単語の末尾に「\n」を追加する必要があります。例えばres.equals("0\n")

4

1 に答える 1

0

使用する前に値をトリミングする必要があります。に変更String res=response.toString();String res=response==null?null:response.trim();ます。それはあなたの問題を解決します。

于 2013-02-07T12:02:43.347 に答える