Android:HttpClient参数-连接和套接字超时
我在互联网上找不到任何有用的教程,也找不到开发者网站上的文档 在我的应用程序中,我使用HttpPost连接到一个Web服务器,当没有internet连接时,但wifi连接时,它会显示一个白色屏幕,大约10-15秒后会出现“未知后异常” 我抓住了这个例外,像烤面包一样烤面包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本身关闭时,我会得到一个即时祝酒词,如“ 但
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();光知道是否有互联网接入就足够了,但这还不够。您发布的答案是:“请注意,拥有活动的网络接口并不保证特定的网络服务可用。网络问题、服务器停机、低信号、外加门户、内容过滤器等都会阻止您的应用到达服务器”