Мое приложение выполнило HTTP-запрос, в котором он передает данные в php-скрипт, а затем ждет ответа. Когда у телефона есть подключение к Интернету, но соединение действительно плохое (т. Е. Плохой сигнал или маршрутизатор не подключен к Интернету), приложение просто заставляет закрывать. Как я могу остановить это?Force Close при ожидании ответа в Интернете
До сих пор эти шаги он принимает
Person прессы кнопка отправки
Это запускает задачу Async, что делает, что телефон имеет соединение (плохие соединения проходят это)
Выполняет HTTP-сообщение
Ожидает ответа
Все эти шаги окружены попытками захвата, которые обрабатывают исключения, однако я все еще получаю силу закрывается.
Вот код 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);
}
}
Какое исключение вызывает замыкание силы? –
У вас есть разрешение на доступ в Интернет? –
Я не уверен, что такое исключение, потому что это происходит в местах без соединения, и я не уверен, как имитировать плохое соединение, поскольку у меня есть только хорошая связь у меня дома. – TomRichardson