2013-02-06 63 views
1

我有一個有趣的問題,我一直試圖找出3個小時..我正在Android的登錄頁面。我將用戶名和密碼的值與HttpClient一起發送到我的PHP頁面,並且直到看到一些代碼如下。HttpClient與Android

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" )始終是假???

問題迎刃而解!!!! 問題是,它是從String res=response.toString();代碼來RE的值與未來「\ n 」所以當你想要比較值,你必須添加‘\ n’字的結尾。例如res.equals("0\n")

+0

你確定''res.equals(「0」)總是false嗎?或者你剛剛得到異常,你的代碼在捕獲範圍內結束...... – Selvin

+0

實際上我已經意識到「res」變量很奇怪。因爲當我寫'res = 0'或'res =「3'時一切都很好,但是來自'String res = response.toString();'代碼的res變量是不同的!當我試圖顯示值在應用程序中,我可以看到res的真實結果,但是在代碼中,我總是去if的第一個塊,所以在代碼中res的值與我想要的不同,但它是真的在應用程序! –

回答

0

你要修剪值在使用之前,更改String res=response.toString();String res=response==null?null:response.trim();,這將解決您的問題。