【发布时间】:2014-01-13 23:10:41
【问题描述】:
我在一个应用程序中有以下代码,它将检查互联网连接。它确实有效,即如果没有互联网,就会说没有互联网(与使用 ConnectivityManager 不同,它只会告诉您是否连接到路由器/3g,但实际上并不检查互联网连接),但只有直到有人连接到将用户重定向到登录页面的 wifi 点。然后应用程序将返回 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();
}
}
【问题讨论】:
标签: android