У меня есть следующий код в приложении, которое будет проверять подключение к Интернету. Он работает, т. Е. Скажет, что нет Интернета, если его нет (в отличие от использования, ConnectivityManager, который будет говорить только о том, что вы подключены к маршрутизатору/3g, но на самом деле не проверяете подключение к Интернету), но только пока кто-то не подключится к точке Wi-Fi, которая перенаправляет пользователя на страницу входа. Затем приложение вернет код 200 и попробует продолжить, но в конечном итоге потерпит крах (и немного сработает). Мое приложение будет использоваться в основном в месте, где есть такое место WiFi. Как проверить, был ли перенаправлен запрос?Проверьте фактическое подключение к Интернету
class online extends AsyncTask<String, String, String>
{
boolean responded = false;
@Override
protected void onPreExecute()
{
super.onPreExecute();
pDialog2 = new ProgressDialog(Main.this);
pDialog2.setMessage("Checking internet, please wait...");
pDialog2.setIndeterminate(false);
pDialog2.setCancelable(false);
pDialog2.show();
}
protected String doInBackground(String... args)
{
try
{
URL url = new URL("http://mydomain.com/connectionTest.html");
HttpURLConnection urlc = (HttpURLConnection) url.openConnection();
urlc.setConnectTimeout(6000); // Timeout is in seconds
urlc.setReadTimeout(6000);
urlc.connect();
if (urlc.getResponseCode() == 200)
{
responded = true;
} else
{
}
} catch (IOException e)
{
}
try
{
int waited = 0;
while (!responded && (waited < 5000))
{
mHandler.postDelayed(new Runnable()
{
public void run()
{
}
}, 100);
waited += 100;
}
}
finally
{
if (!responded)
{
h.sendEmptyMessage(0);
}
else
{
h.sendEmptyMessage(1);
}
}
return null;
}
protected void onPostExecute(String file_url)
{
pDialog2.dismiss();
}
}
У меня есть свой собственный сайт (мое приложение подключается к нему). Итак, вы говорите, что я должен поместить на него страницу generate_204 и попытаться достичь этого? – Howli
Да, это было бы лучше всего. Если вы используете Apache, вы можете создать генератор 204, используя 'RedirectMatch 204 generate_204 $' в вашей конфигурации. К сожалению, я не могу помочь за пределами Apache, и вам нужно будет проверить документацию для своего сервера, чтобы узнать, возможно ли это. В противном случае вам понадобится отступить на доступный серверный язык для генерации 204 для вас. –
Прохладный. Сделать это на 100% ясным для себя. Я получаю ответ 204 (с Apache/php/безотносительно). Получите приложение (попробуйте) подключиться к этой странице, и если нет страницы входа в хот-спот, я получу 204, и все будет хорошо, если нет, тогда я распечатаю сообщение, не сообщая о доступе в интернет и т. Д. – Howli