Apache HttpComponent动态查找服务器

时间:2013-05-28 18:23:10

标签: java android apache-httpcomponents

Helo伙计们,如果这篇文章已经被回答,请原谅我,因为我尝试了很多搜索术语,现在我发现自己没有搜索术语的想法。

我想要的是:

我的Android项目中有一个字符串数组。在这个数组中,我有很多网址。有些实际上是网络服务器,有些则没有。我正在尝试迭代这个数组并使用不拒绝连接的服务器的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());
}

我想要的只是:如果服务器拒绝连接,只需继续尝试,但异常停止整个应用程序

1 个答案:

答案 0 :(得分:0)

你可以试试这个。涉及的jar文件来自Apache-site

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