2012-09-28 22 views
1

我无法在互联网上找到任何有用的教程,也无法找到开发人员网站上的文档。Android:HttpClient参数 - 连接和套接字超时

在我的应用我连接到Web服务器使用HttpPost,当有没有互联网连接,但无线是它显示一个白色的屏幕和后10至15秒“的UnknownHostException”。

我抓住了这个异常并提出烤面包一样

Unable to connect, check your internet connection. 

,并关闭活动(或应用程序,因为我是第一次使用活动结束())。

无线本身是关闭我得到即时的面包如”

You need internet connection to use this Application 

,但第一种情况下是刺激性的。以10-15秒时间,然后显示敬酒。

所以我用HttpParameters并增加了一个5秒ConnectionTimeout参数。

但应用程序的工作与之前一样(此参数没有影响)。

如何追踪ConnectionTime(5秒以上)?这样我就可以显示像

Slow internet connection 

而且敬酒,为什么不工作了互联网连接检查时无线网络连接上,但没有互联网

这是我检查时,我的应用程序lauched:

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

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

至于第二个问题,行

NetworkInfo netInfo = cm.getActiveNetworkInfo(); 

只能获得Wi-Fi状态(即手机WiFi天线开启),但不是实际的连接。该功能立即返回,所以如果wifi关闭,您可以在没有进一步检查连接的情况下烤制。但是当wi-fi打开时,你应该继续检查你的服务器的实际可达性,类似于

InetAddress.getByName(host).isReachable(timeOut) 
+0

其实我也使用SocketTimeout。 Sry,我没有在这个问题中提到它。至于第二种解决方案,你的意思是我只是检查WiFi是否打开?我必须改变它o如果无线网络正在检查互联网接入是否可用?第二个是 –

+0

。当wi-fi打开时,只有在这种情况下,请检查您的实际服务器可达性 – Shine

+0

在我的应用程序中此代码的工作原理:HttpParams httpParameters = new BasicHttpParams(); \t \t \t int timeoutConnection = serverTimeout; (httpParameters,timeoutConnection); HttpResponse响应;响应= httpclient.execute(httpget); – Shine