0

次のコードを使用して、インターネット接続を確認しています。

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);
                    }

そして、私は次の応答を得ています: code: 204 message: No Content

しかし、コンテンツの長さが 0 より大きいため、失敗します。何が起こっているのか理解するのを手伝ってくれませんか?

ありがとう、サニー

4

3 に答える 3

0

タイトルによると、Google に ping を送信したいのですが、HTTP 経由でサイトをリクエストしています。これら 2 つのことは同じではありません。したがって、Android で ping を実行する場合は、次の投稿にアクセスしてください: How to Ping External IP from Java Android

于 2014-10-20T20:10:52.467 に答える
0

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 メソッドを使用する必要があります。これは、HTTP リクエストよりも必要なリソースが少ないためです。

上記の方法は基本的に、インターネットがあるかどうかをAndroidシステムに尋ね、Googleにpingを実行した場合は自分でそれを行うだけです

于 2014-10-20T20:42:15.110 に答える