`

用Java判断一个URL是否有效的两种方法

阅读更多
方法一:
import java.io.InputStream;
import java.net.URL;


public class Test {
public static void main(String[] args) {
	URL url;
	try {
	     url = new URL("http://www.baidu.com");
	     InputStream in = url.openStream();
	     System.out.println("连接可用");
	} catch (Exception e1) {
	     System.out.println("连接打不开!");
	     url = null;
	}
}
}

方法一使用java.net 下的URL类来实现,URL 是统一资源标识符的引用,一个URL实例代表着一个url的引用,然后使用了URL中的的openStream()方法。


方法二:
import java.net.HttpURLConnection;
import java.net.URL;

/**
* 文件名称为: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;
}
public static void main(String[] args) {
	URLAvailability u=new URLAvailability();
	u.isConnect("http://www.baidu.com");
}
}

方法二使用了java.net 下的URL和HttpURLConnection两个类来实现。它使用了HttpURLConnection 中的 getResponseCode();方法,HttpURLConnection : 通常一个HttpURLConnection 的实例可以生成一个请求,它有个方法getResponseCode();可以得到请求的响应状态,该方法返回一个 int 分别是 200 and 404 如无法从响应中识别任何代码则返回 -1。
分享到:
评论
4 楼 sucheng2016 2016-08-11  
如果是https呢
是否可以用正则
3 楼 LyAn_爱踢爱死 2015-08-05  
qachenzude 写道
谢谢,很不错!!

你是托儿吧?
我传了个 http://192.168.1.1:8080(只是举例)的地址,永远都是连接打不开
2 楼 foreach4 2015-03-18  
方法一不行!!
1 楼 qachenzude 2011-12-11  
谢谢,很不错!!

相关推荐

    java开源包4

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

    Java 使用javaCV、ffmpeg拉流H265 RTSP转推H264 RTMP可获取流访问人数(源代码)

    2)、可选择使用javaCV推流、ffmpeg推流两种方式。 3)、javaCV仅支持拉去或推送H264压缩方式的流。 4)、ffmpeg采用命令的方式拉流和推流,支持H265和H264。 5)、支持获取流的访问数,可设置自动关闭0访问数的...

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

    在有状态SessionBean中,用累加器,以对话状态存储起来,创建EJB对象,并将当前的计数器初始化,调用每一个EJB对象的count()方法,保证Bean正常被激活和钝化,EJB对象是用完毕,从内存中清除…… Java Socket 聊天...

    Java EE常用框架.xmind

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

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

    在有状态SessionBean中,用累加器,以对话状态存储起来,创建EJB对象,并将当前的计数器初始化,调用每一个EJB对象的count()方法,保证Bean正常被激活和钝化,EJB对象是用完毕,从内存中清除…… Java Socket 聊天...

    java-servlet-api.doc

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

    java面试题

    35. 当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递? 18 36. swtich是否能作用在byte上,是否能作用在long上,是否能作用在String上?...

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

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

    JAVA基础课程讲义

    对象的序列化主要有两种用途 161 序列化涉及的类和接口 162 序列化/反序列化的步骤和实例 162 综合的序列化和反序列化练习 163 JAVA.IO包相关流对象用法总结(尚学堂1002班王鑫) 165 IO中其他常用类 165 File类 165 ...

    java范例开发大全

    实例1 开发第一个Java程序 7 第2章 Java基础类型与运算符(教学视频:39分钟) 9 2.1 基础类型 9 实例2 自动提升 9 实例3 自动转换 10 实例4 常用基础类型之强制转换 11 2.2 运算符 12 实例5 算术运算符 12 实例6 ...

    java范例开发大全源代码

     实例1 开发第一个Java程序 7  第2章 Java基础类型与运算符(教学视频:39分钟) 9  2.1 基础类型 9  实例2 自动提升 9  实例3 自动转换 10  实例4 常用基础类型之强制转换 11  2.2 运算符 12 ...

    Java范例开发大全 (源程序)

     实例1 开发第一个Java程序 7  第2章 Java基础类型与运算符(教学视频:39分钟) 9  2.1 基础类型 9  实例2 自动提升 9  实例3 自动转换 10  实例4 常用基础类型之强制转换 11  2.2 运算符 12  实例5...

    java自学之道

    3.1 多态分为两种 3.2 调用一个对象方法的机制 3.3 方法调用举例 4、构造函数的重载 4.1 默认字段初始化 4.2 默认构造函数 4.3 显式字段初始化 4.4 构造函数被调用后的详细执行过程 5、包 5.1 创建包 5.2 创建...

    Java范例开发大全(全书源程序)

    实例1 开发第一个Java程序 7 第2章 Java基础类型与运算符 实例2 自动提升 9 实例3 自动转换 10 实例4 常用基础类型之强制转换 11 2.2 运算符 12 实例5 算术运算符 12 实例6 关系运算符 13 实例7 逻辑...

    java范例开发大全(pdf&源码)

    实例1 开发第一个Java程序 7 第2章 Java基础类型与运算符(教学视频:39分钟) 9 2.1 基础类型 9 实例2 自动提升 9 实例3 自动转换 10 实例4 常用基础类型之强制转换 11 2.2 运算符 12 实例5 算术运算符 12 实例6 ...

    Java开发技术大全 电子版

    1.3一个简单的Java应用程序14 1.4一个简单的Java小程序16 1.5本章小结18 第2章Java语言基础19 2.1Java语言的特点19 2.2Java程序的构成21 2.3数据类 型23 2.3.1基本数据类型23 2.3.2常量25 2.3.3变量26 ...

    李兴华Java Web开发实战经典.pdf (高清版) Part1

    MLDN 李兴华 Java Web 开发实战经典.pdf (高清版) 全书分为两部分,需 要全部下载下载一起解压,此部分为第一部分 带有书签,清华大学出版社 第1章 JAVA WEB开发简介 1.1、WEB发展历程 1.2、企业开发架构 ...

    Java-PHP-C#

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

    李兴华Java Web开发实战经典(高清版) Part2

    MLDN 李兴华 Java Web 开发实战经典.pdf (高清版) 全书分为两部分,需 要全部下载下载一起解压,此部分为第二部分 带有书签,清华大学出版社 第1章 JAVA WEB开发简介 1.1、WEB发展历程 1.2、企业开发架构 ...

Global site tag (gtag.js) - Google Analytics