Чтение строки повторяется из PHP в Java? - PullRequest
0 голосов
/ 11 мая 2011

Я пытаюсь использовать следующий код для получения ответа от сервера, отраженного через PHP.Методы сравнения строк compareTo () и (...). Equals (..) не работают должным образом при выполнении этого кода.Я перепробовал всевозможные варианты, и я убежден, что, несмотря на то, что он появляется для преобразования ответа в строковый формат, «responseText» не имеет типичных строковых свойств.Если у меня есть 3 строковых литеральных оператора, одно из которых отражено в findUser.php.Как я могу прочитать его в Java таким образом, чтобы я мог определить содержимое строки, как я пытаюсь сделать здесь?Я нашел много дискуссий о необходимости создания объекта BufferedReader, но я не понимаю, как это реализовать.Если кто-то, пожалуйста, выложите для меня шаги, я был бы очень признателен.

 try {  
      HttpClient httpclient = new DefaultHttpClient();  
      HttpPost httppost = new HttpPost(".../findUser.php");  
      httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));  
      HttpResponse response = httpclient.execute(httppost);  
      final String responseText =  EntityUtils.toString(response.getEntity());  


      if(responseText.compareTo("Not Registered") == 0 || responseText.compareTo("Error") == 0) {  
          Log.i("KYLE","TRUE");
          // DISPLAY ERROR MESSAGE  
          TextView loginError = (TextView)findViewById(R.id.loginErrorMsg);  
          loginError.setVisibility(View.VISIBLE);
          loginError.setText(responseText); 
      }  
      else {  
          GlobalVars.username = userEmail;  
          Login.this.finish();  
          Intent intent = new Intent(Login.this,Purchase.class);  
          startActivity(intent);
      }  
      catch(Exception e) {Log.e("log_tag", "Error in http connection"+e.toString());}

}

Ответы [ 2 ]

1 голос
/ 11 мая 2011

Если ваше сообщение журнала responseText выглядит правильно, но методы сравнения возвращают false, то, скорее всего, у вас проблема с набором символов.Существует много случаев, когда один и тот же символ появляется в разных точках кода разных наборов символов.

Документация для EntityUtils.toString () гласит, что при отсутствии набора символов, он пытается проанализировать объект или просто возвращается к ISO-8859-1.

UTF-8 - это, как правило, безопасное использование по умолчанию.Попробуйте добавить это в начало вашего PHP-скрипта:

<?php 
   header('Content-Type: text/plain; charset=utf-8'); 
?>

EntityUtils должен поднять это, если нет, вы можете передать "utf-8" методу toString (), чтобы заставить его использовать тот же символустановлен.

0 голосов
/ 12 января 2012

Вот еще несколько способов чтения данных из ответа.

InputStream inputStream = response.getEntity().getContent();

(Способ 1) Считывание данных по одной строке за раз с использованием буферизованного считывателя

    BufferedReader br = new BufferedReader(new InputStreamReader(inputStream));

    String readData = "";
    String line = "";

    while((line = br.readLine()) != null){
        readData += line;
    }

(Способ 2) Чтение данных по одному байту за раз, затем преобразование в строку

    byte[] buffer = new byte[10000]; //adjust size depending on how much data you are expecting
    int readBytes = inputStream.read(buffer);

    String dataReceived = new String(buffer, 0, readBytes); 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...