0

こんにちは、この投稿が既に回答されている場合は、ご容赦ください。多くの検索用語を試しましたが、検索用語のアイデアがまったくないことに気づきました。

私が欲しいのは:

私の Android プロジェクトには 1 つの文字列配列があります。この配列には、多くの URL があります。いくつかは実際にウェブサーバーであり、他はそうではありません。この配列を繰り返し処理し、接続を拒否しなかったサーバーの URL のみを使用して他の配列を作成しようとしています。しかし、常に接続拒否の例外が発生し、アプリケーションが停止します。

URL が有効かどうかをテストするにはどうすればよいですか? もう一度、この質問が既に存在する場合は申し訳ありません。ここで質問する前に、本当にこれを検索しようとしました。

編集:

私は私のコードのいくつかのサンプルを置きます

try{
  for(int i = 0; i <= 255; i++){
    String ip = "http://192.168.0." + i;

    HttpGet get = new HttpGet(ip);

    if(!get.isAborted()){
      String response = httpclient.execute(get);//The exception is here
      //..... The code continues .....
    }

  }
}catch(HttpHostConnectionException e){
  Log.e("HttpHostConnectionException", e.getMessage());
}

私が望むのは、サーバーが接続を拒否した場合は、試行を続行するだけですが、代わりに例外がアプリケーション全体を停止することです

4

1 に答える 1

0

これを試すことができます。関連するjarファイルはApacheサイトからのものです

public static void main(String[] args) throws Exception{
    CloseableHttpClient httpclient = HttpClients.createDefault();
    try {
        for(int i = 0; i <= 255; i++){
            String ip = "http://192.168.0." + i;
            HttpGet httpget = new HttpGet(ip);

            // Execute HTTP request
            System.out.println("Execute request:" + httpget.getURI());
            CloseableHttpResponse response = httpclient.execute(httpget);
            try {
                // Get the status code of responding from servers
                int status = response.getStatusLine().getStatusCode();

                if (status >= 200 && status < 300) {
                    // the server accept your request, you can do something. 
                    // For example, display the source code of web page.

                    // Get hold of the response entity
                    HttpEntity entity = response.getEntity();
                    System.out.println( entity != null ? EntityUtils.toString(entity) : null );
                } else {
                    // the server refuse your accessing.
                    // do something...

                    continue;
                }
            } finally {
                response.close();
            }
        }
    } finally {
        httpclient.close();
    }
}
于 2013-12-19T15:25:34.040 に答える