2014-07-25 3 views
-1

Я пишу программу для проверки входа в систему, которая не может работать. Отсутствие какой-либо ошибки, но она не генерирует текст тоста для неправильного входа в систему. Я считаю, что это неправильно при условии состояния. Если вход ошибочен, он ответит «null», пока он отображается в журнале.Не удалось проверить логин

Но я не могу найти, где ошибка, может ли кто-нибудь помочь?

 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-clause не может быть запущена, что означает, что условие идет не так, но я не знаю, почему это происходит неправильно ... Я также попытался положить лог внутри if-clause, он доказывает, что условие действительно не работает – Simon

+0

Что делает оператор журнала 'response:' print? также необходимо изменить второе условие в операторе 'if'. Проверка 'String' для равенства должна выполняться с помощью метода' equals() '. – asgs

ответ

1

Возможно, loginResponse является переменной String. Таким образом, это не правильный способ сравнения двух строк для равенства. Следовательно, это условие не проверяется во время выполнения. .

Используется метод сравнения firstString со вторым строкой. Используется метод public boolean equals(String secondString). Попробуйте изменить если-заявление

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

это работает, thx :) – Simon

+0

Пожалуйста, поддержите ответ тоже @Simon! –

+0

Почему бы не обозначить как дубликат? Я думаю, что это самый распространенный дубликат во всем теге java. – csmckelvey

Смежные вопросы