Принудительное закрытие при ожидании интернет-ответа - PullRequest
0 голосов
/ 19 декабря 2011

Мое приложение выполнило запрос HTTP, где оно отправляет данные в php-скрипт, а затем ожидает ответа.Когда телефон подключен к Интернету, но соединение действительно плохое (т. Е. Плохой сигнал или маршрутизатор не подключен к Интернету), приложение просто принудительно закрывается.Как я могу это остановить?

Пока это шаги, которые нужно выполнить

  1. Человек нажимает кнопку отправки

  2. Это начинаетсяасинхронная задача, которая обеспечивает соединение с телефоном (плохие соединения передают это)

  3. выполняет HTTP-сообщение

  4. ожидаетответ

Все эти шаги окружены методом try and catch, который обрабатывает исключения, однако я все еще получаю принудительное закрытие.

Вот код AsyncTask

private class checkDatabase extends AsyncTask<String, Void, Boolean> {

    ProgressDialog progressDialog;

    protected void onPreExecute() {
        super.onPreExecute();
        // Starting the progress dialog
        progressDialog = ProgressDialog.show(Login.this, "",
                "Connecting. Please wait...", true);

    }

    protected Boolean doInBackground(String... info) {
        // TODO Auto-generated method stub

        ConnectivityManager cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
        NetworkInfo netInfo = cm.getActiveNetworkInfo();

        if (netInfo != null && netInfo.isConnected()) {

            String us = info[0];
            String ps = info[1];

            String responseText;

            if (us.equals("") || ps.equals("")) {
                //No username or password
                return false;
            } else {
                try {
                    // Create a new HttpClient and Post Header
                    HttpClient httpclient = new DefaultHttpClient();
                    HttpPost httppost = new HttpPost(
                            "http://www.myfirstagent.com/android/loginquery.php");

                    // Add your data
                    List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(
                            2);
                    nameValuePairs.add(new BasicNameValuePair("username",
                            us));
                    nameValuePairs.add(new BasicNameValuePair("password",
                            ps));
                    httppost.setEntity(new UrlEncodedFormEntity(
                            nameValuePairs));
                    HttpResponse response;
                    // Execute HTTP Post Request
                    try {
                        response = httpclient.execute(httppost);
                        responseText = EntityUtils.toString(response
                                .getEntity());
                    } catch (Exception e) {
                        //problem connecting
                        return false;

                    }

                    if (responseText.equals("accept")) {
                        return true;
                    } else if (responseText.equals("decline")) {
                        //invalid username or password
                        return false;

                    } else {
                        //something went wrong
                        return false;
                    }

                } catch (Exception e) {

                    //something went wrong
                    return false;
                }
            }

        } else {
            //No connection
            return false;
        }

    }

    protected void onPostExecute(Boolean result) {

        // Dismissing the progress dialog
        if (progressDialog.isShowing())
            progressDialog.dismiss();
        super.onPostExecute(result);
    }
}

1 Ответ

0 голосов
/ 19 декабря 2011

Просто проверьте, если ответ нулевой.

Если вы хотите поймать все, что может случиться, вы можете поймать Throwable.

Узнайте, как читать трассировку стека, это лучший совет для вас.Вы должны понимать, где ваша программа терпит неудачу и как они получают шанс понять, почему они терпят неудачу, и исправлять их.

...