2014-07-25 161 views
-1

我正在編寫一個程序來驗證無法工作的登錄。不會發生任何錯誤,但不會生成不正確登錄的烤麪包文本。我認爲它在條件狀態下出錯。如果登錄錯誤,它會在日誌中顯示'空'。無法驗證登錄

但我找不到錯在哪裏,有人可以幫忙嗎?

 HttpClient client = new DefaultHttpClient(); 

     try { 
      ArrayList<NameValuePair> parameters = new ArrayList<NameValuePair>(); 
      parameters.add(new BasicNameValuePair("login", loginText)); 
      parameters.add(new BasicNameValuePair("password", pwText)); 

      String url = controller.bniRootUrl+ 
        controller.folderUser+ 
        controller.fileLogin+ 
        "?"; 

      url += URLEncodedUtils.format(parameters, "utf-8"); 

      HttpGet get = new HttpGet(url); 
      HttpResponse response = client.execute(get); 

      loginResponse = EntityUtils.toString(response.getEntity()); 

     } catch (UnsupportedEncodingException e) { 
      e.printStackTrace(); 
     } catch (ClientProtocolException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } catch (IOException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 

     Log.d(TAG, "response: "+loginResponse); 
     if (loginResponse == null || loginResponse == "null" || loginResponse.isEmpty()){ 
      Toast.makeText(Login.this, "invalid login", Toast.LENGTH_SHORT).show(); 
     } 
+1

首先,您需要說明「無法工作」的含義。目前的行爲是什麼?預期是什麼?另外,你需要的可能是自己嘗試調試它。我發現你已經使用了一些日誌進行調試,如果你添加了足夠多的日誌,最終你會很容易發現問題出在哪裏。例如,記錄輸入的用戶名/密碼,url,reposnse(你所做的),或者在你的吐司線後面記錄一條日誌行,以確保它進入編輯該問題的if {} –

+0

。 if語句裏面的語句無法運行,這意味着條件出錯了,但我不知道爲什麼會出錯...... 我也試過把日誌放在if子句中,它證明條件真的不起作用 – Simon

+0

什麼是日誌語句'response:'print?另外,應該修改'if'語句中的第二個條件。 'String'應該用'equals()'方法檢查是否相等。 – asgs

回答

1

可能loginResponse是一個String變量。所以,這不是比較兩個字符串是否相等的正確方法。因此,這種情況在運行時沒有得到驗證。 。

我們使用public boolean equals(String secondString)方法來比較firstString和secondString。 嘗試更改if語句爲

if (loginResponse.equals(null) || loginResponse.equals("null") || loginResponse.isEmpty()) 
{...} 
+0

它的工作,thx :) – Simon

+0

請upvote答案@Simon! –

+0

爲什麼不標記爲重複?我認爲這是整個java標籤中最常見的副本。 – csmckelvey