`
chenyunhong
  • 浏览: 136271 次
  • 性别: Icon_minigender_1
  • 来自: 真的不知道
社区版块
存档分类
最新评论

用JAVA判断一个URL是否有效

    博客分类:
  • Java
阅读更多

最近因项目需求,需要针对一些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,代码如下:

/**
* 文件名称为:URLAvailability.java
* 文件功能简述: 描述一个URL地址是否有效
* @author Jason
* @time   2010-9-14 
* 
*/
public class URLAvailability {
private static URL url;
private static HttpURLConnection con;
private static int state = -1;

/**
   * 功能:检测当前URL是否可连接或是否有效,
   * 描述:最多连接网络 5 次, 如果 5 次都不成功,视为该地址不可用
   * @param urlStr 指定URL网络地址
   * @return URL
   */
public synchronized URL isConnect(String urlStr) {
   int counts = 0;
   if (urlStr == null || urlStr.length() <= 0) {                       
    return null;                 
   }
   while (counts < 5) {
    try {
     url = new URL(urlStr);
     con = (HttpURLConnection) url.openConnection();
     state = con.getResponseCode();
     System.out.println(counts +"= "+state);
     if (state == 200) {
      System.out.println("URL可用!");
     }
     break;
    }catch (Exception ex) {
     counts++; 
     System.out.println("URL不可用,连接第 "+counts+" 次");
     urlStr = null;
     continue;
    }
   }
   return url;
}
}
 

超级OK

3
0
分享到:
评论
2 楼 wangxiaolongbob 2011-08-21  
可是为什么我用一个不能连接的url测试,结果还是打印出0=404(就是说能连接的意思)啊?!我测试的是这个url:http://www.lovingnet.com/citys000/A1502.asp,请楼主试一下
1 楼 macrotea 2010-10-19  
不知道要不要判断一下状态是401或者403的,虽然能打开,但是不知道是否有限制或者重定向了

相关推荐

    URL的又有效性判断

    URL的又有效性判断

    JAVA验证URL是否有效连接的方法

    昨天做了个监控远程服务器是否正常连接,费了很大脑动力,写成了下面的方法,现在分享给大家,希望可以帮助都更多的人。 写个方法的时候一直有个误区,不知道怎么去监控远程服务器,望遇到同样问题人,跳出这个思想...

    判断是否有效的可以用网络

    大概的思路:开一个总的线程管理一个判断某个URL是否有效的,在里面用的是http://www.baidu.com测试,另一个是开个3秒线程[3秒也就是超时时间],如果有可用网络的话,线程1会在3秒内执行完成,也就是线程1会比线程2...

    java开源包4

    Flume 是一个分布式、可靠和高可用的服务,用于收集、聚合以及移动大量日志数据,使用一个简单灵活的架构,就流数据模型。这是一个可靠、容错的服务。 彩信发送开发包 apimms apimms 提供了各种语言用来发送彩信...

    JAVA上百实例源码以及开源项目

     用JAVA开发的一个小型的目录监视系统,系统会每5秒自动扫描一次需要监视的目录,可以用来监视目录中文件大小及文件增减数目的变化。 Java日期选择控件完整源代码 14个目标文件 内容索引:JAVA源码,系统相关,日历,...

    Java EE常用框架.xmind

    不用我们去实现退出,只要去访问一个退出的url(该 url是可以不存在),由LogoutFilter拦截住,清除session。 数据回显 授权过滤器使用 XML配置方式 1.在配置文件上配置配置filter规则。/items...

    JAVA上百实例源码以及开源项目源代码

     用JAVA开发的一个小型的目录监视系统,系统会每5秒自动扫描一次需要监视的目录,可以用来监视目录中文件大小及文件增减数目的变化。 Java日期选择控件完整源代码 14个目标文件 内容索引:JAVA源码,系统相关,日历,...

    java-servlet-api.doc

    然而,一个映射可能是由一个URL和许多Servlet实例组成,例如:一个分布式的Servlet引擎可能运行在不止一个的服务器中,这样的话,每一个服务器中都可能有一个Servlet实例,以平衡进程的载入。作为一个Servlet的...

    Java获取文件分辨率,大小等基本信息Demo

    这个文件中包含测试的Demo和需要的jar包,Demo中有两种方式来获取视频的分辨率,大小等基本信息,简单易上手,亲测有效,没效你顺着网线过来da我

    javascript如何判断输入的url是否正确

    网页得来,原网页广告太多,影响心情 代码如下: &lt;... &lt;head&gt; &lt;title&gt;检查是否为URL&lt;...“你输入的URL有效”&#41;; return true; } } [removed] &lt;/head&gt; &lt;body&gt; &lt;form name=”

    nutch介绍信息

    5,reduce只做一件事,判断url是不是在crawldb中已经存在,如果存在则直接读取原来CrawlDatum,如果是新host,则把相应状态存储到里边(STATUS_DB_UNFETCHED(状态意思为没有采集过)) 二、org.apache.nutch....

    Java-PHP-C#

    好了,现在我们要用我们所学的来干一些有用的事:构建一个匹配模式去检查输入的信息是否为一个表示money的数字。我们认为一个表示money的数量有四种方式: "10000.00" 和 "10,000.00",或者没有小数部分, "10000" and...

    一个web爬虫的事例.txt

    * 搜索程序应该在搜索过程中跳过这些区域,下面是robots.txt的一个例子: * # robots.txt for http://somehost.com/ User-agent: * Disallow: /cgi-bin/ * Disallow: /registration # Disallow robots on ...

    正则表达式经典实例

    《正则表达式经典实例》讲解了基于8种常用的编程语言使用正则表达式的经典实例。书中提供了上百种可以在实战中使用的实例,以帮助读者使用正则表达式来... 使用8种编程语言的详细解决方案,包括一个正则表达式简明教程

    HttpClient以及获取页面内容应用

    通过一个URLConnection或者一个保存有网页内容的字符串来初始化Parser,或者使用静态函数来生成一个Parser对象。 ParserFeedback的代码很简单,是针对调试和跟踪分析过程的,一般不需要改变。而使用Lexer???? ...

    ASP200问.EXE

    7.如何创建一个ASP文件并浏览其执行结果 第2章 ASP.NET运行模型 12.如何定义变量和判定变量类型 13.什么是变量的作用域 14.如何强制要求显式声明变量 15.如何保留或消除过程调用对变量的影响 16.如何创建和调整...

    工程硕士学位论文 基于Android+HTML5的移动Web项目高效开发探究

    除此之外,用户需要亲临检测机构实地送检,在检测的每一个环节用户也无法有效的进行追踪,这些都制约着认证检测领域的进一步发展。鉴于市场上用户的手机型号、种类、屏幕分辨率等参差不齐,传统方式根据主流系统分别...

    《javaScrip开发技术大全》源代码

    • sample41.htm 判断一个对象是否是另一个对象的原型对象 • sample42.htm 判断对象的属性是否可以被枚举 • sample43.htm 监视属性值的变化情况 第10章(\代码\第10章) • sample01....

    JavaScript完全自学宝典 源代码

    3.6.html 向数组头添加一个项。 3.7.html 多维数组的实现方法。 第4章(\c04) 示例描述:介绍JavaScript的面向对象特性。 4.1.html 对象的创建。 4.2.html 作为关联数组的对象与数组对象实现方式...

Global site tag (gtag.js) - Google Analytics