Ответ Android от проблемы скрипта - PullRequest
0 голосов
/ 12 апреля 2011

Я использую HttpClient, используя метод POST для отправки строки в скрипт. Сценарий работает нормально, он просто проверяет, существует ли таблица в БД. Если таблица существует, «1» возвращается эхом.

В следующем коде все отлично работает

HttpClient client = new DefaultHttpClient();
                    HttpPost post = new HttpPost("//remote//script.php");

                    List<NameValuePair> pairs = new ArrayList<NameValuePair>();
                    pairs.add(new BasicNameValuePair("tblname", concatenated));
                    try 
                    {
                        post.setEntity(new UrlEncodedFormEntity(pairs));
                    } 
                    catch (UnsupportedEncodingException e) 
                    {
                        e.printStackTrace();
                    }
                    try 
                    {
                        HttpResponse response = client.execute(post);
                        entity = response.getEntity();
                        res = EntityUtils.toString(entity); //this is now the echo back from the script, "1" means tbl already exists exists 

                    } 
                    catch (ClientProtocolException e) 
                    {
                        e.printStackTrace();
                    } 
                    catch (IOException e) 
                    {
                        e.printStackTrace();
                    }


                    Toast msg1 = Toast.makeText(main.this, res, Toast.LENGTH_LONG);
                    msg1.setGravity(Gravity.CENTER, msg1.getXOffset() / 2, msg1.getYOffset() / 2);
                    msg1.show();
                    SavePreferences("prefs", concatenated);
                    //fire the authed intent
                    startauthedactivity();
                    }

Если таблица, предоставленная для сценария, существует 1, отображается в конце тоста, если его нет, тост пуст, это правильное поведение.

Когда я применяю -if- к ответу, он всегда вызывает истинное условие, даже если таблица существует. В следующем коде, если таблица существует, то res следует = 1, и условие не является истинным, поэтому блок else должен запускаться, но это не происходит. Тем не менее, странно, если я передаю таблицу, которая существует в сценарии, то тост на самом деле отображает 1 ...

if(res != "1")
                {

                Toast msg1 = Toast.makeText(main.this, res, Toast.LENGTH_LONG);
                msg1.setGravity(Gravity.CENTER, msg1.getXOffset() / 2, msg1.getYOffset() / 2);
                msg1.show();
                SavePreferences("prefs", concatenated);
                //fire the authed intent
                startauthedactivity();
                }
                else
                {
                    //do nothing
                }

Ответы [ 2 ]

2 голосов
/ 12 апреля 2011

В Java вы должны использовать equals () для сравнения строк

if("1".equals(res)) {...

Обратите внимание, что вы должны использовать "1".equals(res) вместо res.equals("1").

Если res = null, первый будет работать, так как equals обрабатывает нулевые аргументы. Второй получит NullPointerException, потому что res равно нулю:)

1 голос
/ 12 апреля 2011

изменить

if(res != "1")

на

if(res.equals("1"))

Почему?

== сравнивает ссылку на объект (его положение в памяти)equals сравнивает содержимое строки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...