Android:HttpClient参数 - 连接和套接字超时

时间:2012-09-28 08:56:37

标签: android http-post httpclient

我在互联网上找不到任何有用的教程,也没有找到开发者网站上的文档。

在我的应用程序中,我使用HttpPost连接到Web服务器,当没有互联网连接,但 wifi 打开时显示白屏并且在10点之后-15秒“UnknownHostException”。

我抓住了这个例外并像烤面包一样

Unable to connect, check your internet connection.

并关闭Activity(或者应用程序,因为我在第一个Activity上使用了finish())。

wifi 本身关闭时,我会像“

一样立即吐司
You need internet connection to use this Application

但第一种情况令人恼火。花10到15秒的时间然后展示吐司。

所以我使用 HttpParameters 并添加了 5秒ConnectionTimeout 参数。

但该应用程序的工作方式与以前相同(不影响此参数)。

如果我点击ConnectionTime(5秒结束),我如何跟踪。所以我可以展示像Toast一样的Toast

Slow internet connection

此外,为什么当 wifi开启但没有互联网时,互联网连接检查不起作用

这是我在推出申请时检查的内容:

cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);

if (isOnline(cm, this, SignUpActivity.this)){
//continue
}

public static boolean isOnline(ConnectivityManager cm, Context c, Activity a) {

    NetworkInfo netInfo = cm.getActiveNetworkInfo();
    if (netInfo != null && netInfo.isConnectedOrConnecting()) {
        return true;
    }

    Toast.makeText(c, "You need internet access to run this application",
            Toast.LENGTH_SHORT).show();
    a.finish();
    return false;
}

我只检查设备的wifi是否打开。如果是这样,我怎么能检查我是否有互联网连接,而不仅仅是wifi

谢谢

1 个答案:

答案 0 :(得分:1)

关于第一个问题,请尝试使用SocketTimeout

关于第二个问题,行

NetworkInfo netInfo = cm.getActiveNetworkInfo();

仅获得Wi-Fi状态(即手机wifi天线开启)但不实际连接。该函数立即返回,因此如果关闭wifi,您可以在不进一步检查连接的情况下进行烘烤。但是当打开wi-fi时,你应该继续检查服务器的实际可达性,例如

InetAddress.getByName(host).isReachable(timeOut)