ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

Java 判断URL是否有效

2022-07-28 08:33:18  阅读:245  来源: 互联网

标签:openStream 判断 Java URL url urlStr null HttpURLConnection


    需要针对一些URL地址进行检测是否可用,使用java.net 下的类来实现,主要用到了 URL和HttpURLConnection 二个类 ,URL 是统一资源标识符的引用,一个URL实例代表着一个url的引用,开始使用了URL中的的openStream()方法,这样使用倒是可以,但是速度慢,代码如下:

 

            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,代码如下:

 

/** 
  * 功能:检测当前URL是否可连接或是否有效, 
  * 描述:最多连接网络 3 次, 如果 3 次都不成功,视为该地址不可用 
  * @param  urlStr 指定URL网络地址 
  * @return URL 
  */  
 public synchronized String isConnect(String urlStr) {  
     int counts = 0;  
     retu = "";  
     if (urlStr == null || urlStr.length() <= 0) {                         
         return null;                   
     }  
     while (counts < StaticConstant.REQUEST_COUNT) {  
         long start = 0;  
         try {  
             url = new URL(urlStr);  
             start = System.currentTimeMillis();  
             con = (HttpURLConnection) url.openConnection();  
             state = con.getResponseCode();  
             log.info("请求断开的URL一次需要:"+(System.currentTimeMillis()-start)+"毫秒");  
             if (state == 200) {  
                 retu = "ok";  
                 log.info(urlStr+"--可用");  
             }  
             break;  
         }catch (Exception ex) {  
             counts++;   
             log.info("请求断开的URL一次需要:"+(System.currentTimeMillis()-start)+"毫秒");  
             log.info("连接第 "+counts+" 次,"+urlStr+"--不可用");  
             continue;  
         }  
     }  
     return retu;  
 }

 

标签:openStream,判断,Java,URL,url,urlStr,null,HttpURLConnection
来源: https://www.cnblogs.com/Fooo/p/16527215.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有