java - Java: 通过ping进行互联网连接检查不工作

  显示原文与译文双语对照的内容

我正在使用以下代码检查互联网连接:


try {
 HttpURLConnection httpConnection = (HttpURLConnection) (new URL("http://clients3.google.com/generate_204").openConnection());
 httpConnection.setRequestProperty("User-Agent","Test");
 httpConnection.setRequestProperty("Connection","close");
 httpConnection.setConnectTimeout(15000); 
 httpConnection.connect();
 if (httpConnection.getResponseCode() == 204 && httpConnection.getContentLength() == 0){
//internet is avialable

 return;
 }else{
 Log.e(TAG,"Internet connection error:" + httpConnection.getResponseCode()
 +":" + httpConnection.getResponseMessage());
 }
 } catch (IOException e) {
 Log.e(TAG,"Internet connection error:" + e);
 }

我得到以下响应: 代码:204消息:无内容

但是内容长度大于 0,因此它失败。 请大家帮助我了解发生了什么?

,Sunny

时间: 作者:

根据你想要使用google的标题,但是你正在通过HTTP请求站点,这两种情况并不相同。 所以如果你想在Android中访问这个帖子: 如何从Java中Ping外部 IP

如果你信任你的Android设备,那么你可以只使用这里方法:


public boolean isOnline() {
ConnectivityManager cm =
 (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo netInfo = cm.getActiveNetworkInfo();
if (netInfo!= null && netInfo.isConnectedOrConnecting()) {
 return true;
}
return false;

}

但是如果你想自己做,那么你应该使用ping方法,因为它需要 LESS 资源而不是HTTP请求

如果你有互联网,那么 上面 基本上是askes系统,如果你有自己的网络,那么你就可以自己

...