Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/202.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android:HttpClient参数-连接和套接字超时_Android_Http Post_Httpclient - Fatal编程技术网

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

Android:HttpClient参数-连接和套接字超时,android,http-post,httpclient,Android,Http Post,Httpclient,我在互联网上找不到任何有用的教程,也找不到开发者网站上的文档 在我的应用程序中,我使用HttpPost连接到一个Web服务器,当没有internet连接时,但wifi连接时,它会显示一个白色屏幕,大约10-15秒后会出现“未知后异常” 我抓住了这个例外,像烤面包一样烤面包 Unable to connect, check your internet connection. 然后关闭活动(或应用程序,因为我在第一个活动中使用finish() 当wifi本身关闭时,我会得到一个即时祝酒词,如“ 但

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

在我的应用程序中,我使用HttpPost连接到一个Web服务器,当没有internet连接时,但wifi连接时,它会显示一个白色屏幕,大约10-15秒后会出现“未知后异常”

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

Unable to connect, check your internet connection.
然后关闭活动(或应用程序,因为我在第一个活动中使用finish()

wifi本身关闭时,我会得到一个即时祝酒词,如“

但第一种情况令人恼火。花10-15秒的时间,然后展示烤面包片

因此,我使用了HttpParameters并添加了5秒ConnectionTimeout参数

但应用程序的工作原理与以前相同(此参数不起作用)

如果我点击了ConnectionTime(5秒结束),我如何跟踪?这样我就可以像

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


谢谢

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

至于第二个问题,这条线

NetworkInfo netInfo = cm.getActiveNetworkInfo();
仅获取Wi-fi状态(即手机wifi天线打开),而不获取实际连接。该功能会立即返回,因此如果关闭wifi,您可以在不进一步检查连接的情况下干杯。但是,当Wi-fi打开时,您应该继续检查服务器的实际可达性,例如

InetAddress.getByName(host).isReachable(timeOut)

对于第一个问题,尝试使用

至于第二个问题,这条线

NetworkInfo netInfo = cm.getActiveNetworkInfo();
仅获取Wi-fi状态(即手机wifi天线打开),而不获取实际连接。该功能会立即返回,因此如果关闭wifi,您可以在不进一步检查连接的情况下干杯。但是,当Wi-fi打开时,您应该继续检查服务器的实际可达性,例如

InetAddress.getByName(host).isReachable(timeOut)

实际上我也在使用SocketTimeout。Sry我在问题中没有提到它。至于第二个解决方案,你的意思是我只是检查wifi是否打开?我必须更改它o如果wifi打开,检查是否可以访问internet?第二个。当wi-fi打开时,只有在这种情况下,才在我的应用程序中检查实际的服务器可达性此代码有效:HttpParams httpParameters=new BasicHttpParams();int timeoutConnection=serverTimeout;HttpConnectionParams.setConnectionTimeout(httpParameters,timeoutConnection);HttpResponse-response-response;response=httpclient.execute(httpget);我实际上遵循了这个解决方案:它说的是cm.getActiveNetworkInfo();仅仅知道是否有互联网接入就足够了,但这还不够。你发布的答案是:“请注意,拥有活动的网络接口并不能保证特定的网络服务可用。网络问题、服务器宕机、低信号、捕获门户、内容过滤器等都会阻止应用程序访问服务器“实际上我也在使用SocketTimeout。我在问题中没有提到。至于第二个解决方案,你的意思是我只是检查wifi是否开启?我必须将其更改为o,如果wifi打开,请检查是否可以访问internet?第二个。当wi-fi打开时,仅在这种情况下,检查我的应用程序中的实际服务器可达性此代码有效:HttpParams httpParameters=new BasicHttpParams();int timeoutConnection=serverTimeout;HttpConnectionParams.setConnectionTimeout(httpParameters,timeoutConnection);HttpResponse响应;response=httpclient.execute(httpget);我实际上遵循了这个解决方案:其中显示cm.getActiveNetworkInfo();光知道是否有互联网接入就足够了,但这还不够。您发布的答案是:“请注意,拥有活动的网络接口并不保证特定的网络服务可用。网络问题、服务器停机、低信号、外加门户、内容过滤器等都会阻止您的应用到达服务器”