用JAVA判断一个URL是否有效

来源:互联网 发布:itools苹果助手 mac 编辑:程序博客网 时间:2024/04/28 06:00
最近因项目需求,需要针对一些URL地址进行检测是否可用,使用java.net 下的类来实现,主要用到了 URL和HttpURLConnection 二个类 ,URL 是统一资源标识符的引用,一个URL实例代表着一个url的引用,开始使用了URL中的的openStream()方法,这样使用倒是可以,但是速度慢,代码如下:

Java代码 复制代码 收藏代码
  1. try {   
  2.      url = new URL("http://127.0.0.1/sj/user/getUser");   
  3.      in = url.openStream();   
  4. catch (Exception e1) {   
  5.      System.out.println("连接打不开!");   
  6.      url = null;   
  7. }  
try {     url = new URL("http://127.0.0.1/sj/user/getUser");     in = url.openStream();} catch (Exception e1) {     System.out.println("连接打不开!");     url = null;}
 

 

下面判断url是不是null就可以了,速度慢

最后使用了HttpURLConnection 中的 getResponseCode();方法,HttpURLConnection : 通常一个HttpURLConnection 的实例可以生成一个请求,它有个方法 getResponseCode();可以得到请求的响应状态,该方法返回一个 int 分别是 200 and 404 如无法从响应中识别任何代码则返回 -1,代码如下:

 

 

Java代码 复制代码 收藏代码
  1. /**  
  2.       * 功能:检测当前URL是否可连接或是否有效,  
  3.       * 描述:最多连接网络 3 次, 如果 3 次都不成功,视为该地址不可用  
  4.       * @param  urlStr 指定URL网络地址  
  5.       * @return URL  
  6.       */  
  7.      public synchronized String isConnect(String urlStr) {   
  8.          int counts = 0;   
  9.          retu = "";   
  10.          if (urlStr == null || urlStr.length() <= 0) {                          
  11.              return null;                    
  12.          }   
  13.          while (counts < StaticConstant.REQUEST_COUNT) {   
  14.              long start = 0;   
  15.              try {   
  16.                  url = new URL(urlStr);   
  17.                  start = System.currentTimeMillis();   
  18.                  con = (HttpURLConnection) url.openConnection();   
  19.                  state = con.getResponseCode();   
  20.                  log.info("请求断开的URL一次需要:"+(System.currentTimeMillis()-start)+"毫秒");   
  21.                  if (state == 200) {   
  22.                      retu = "ok";   
  23.                      log.info(urlStr+"--可用");   
  24.                  }   
  25.                  break;   
  26.              }catch (Exception ex) {   
  27.                  counts++;    
  28.                  log.info("请求断开的URL一次需要:"+(System.currentTimeMillis()-start)+"毫秒");   
  29.                  log.info("连接第 "+counts+" 次,"+urlStr+"--不可用");   
  30.                  continue;   
  31.              }   
  32.          }   
  33.          return retu;   
  34.      }  
原创粉丝点击