java 检测一个URL地址是否有效
2015-07-01 13:38
579 查看
package com.hety.util;
import java.io.IOException;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
/**
*
*检测一个URL地址是否有效
* @author hety
* @version 1.0 2015-7-1 上午11:03:08
*/
public class URLAvailability {
private static URL url=null;
private static HttpURLConnection connection;
private static String succ="";
private static int statusCode = -1;
private static int testCounts = 5;//尝试链接次数
/**
* 功能描述 : 检测当前URL是否可连接或是否有效,
* 最多连接网络 5 次, 如果 5 次都不成功说明该地址不存在或视为无效地址.
*
* @param urlStr
* 指定URL网络地址
*
* @return String
*/
private synchronized String isConnectable(String urlStr) {
int counts = 0;
if (urlStr == null || urlStr.length() <= 0) {
return succ;
}
while (counts < testCounts) {
try {//非格式,io错误的链接
url = new URL(urlStr);
connection = (HttpURLConnection) url.openConnection();
statusCode = connection.getResponseCode();
if (statusCode == 200) {
succ = connection.getURL().toString();
break;
}
counts++;
System.out.println("连接次数:"+counts);
} catch (Exception ex) {//格式,io错误的链接
counts++;
System.out.println("连接次数:"+counts);
}
}
return succ;
}
/**
* 功能:检测当前URL是否可连接或是否有效,
* 描述:最多连接网络 5 次, 如果 5 次都不成功,视为该地址不可用
* @param urlStr 指定URL网络地址
* @return URL
*/
public synchronized URL isConnect(String urlStr) {
int counts = 1;
if (urlStr == null || urlStr.length() <= 0) {
return null;
}
while (counts <= testCounts) {
try {
url = new URL(urlStr);
connection = (HttpURLConnection) url.openConnection();
statusCode = connection.getResponseCode();
System.out.println("第"+(counts) +"/"+testCounts+"次链接, statusCode:"+statusCode);
counts++;
//非格式错误链接
if (statusCode == 200) {//可连接
System.out.println("URL可用!");
break;
}else{//不可连接
url = null;
}
} catch (MalformedURLException e) {//格式错误
System.out.println("URL不可用,尝试连接第"+(counts) +"/"+testCounts+"次");
url = null;
counts++;
continue;
} catch (IOException e) {//io错误
System.out.println("URL不可用,尝试连接第"+(counts) +"/"+testCounts+"次");
url = null;
counts++;
}
}
return url;
}
/**
* 功能:检测当前URL是否可连接或是否有效,
* 描述:最多连接网络 5 次, 如果 5 次都不成功,视为该地址不可用
* @param urlStr 指定URL网络地址
* @return URL
*/
public synchronized boolean isConnected(String urlStr) {
int counts = 1;
boolean connected = false;
if (urlStr == null || urlStr.length() <= 0) {
return false;
}
while (counts <= testCounts) {
try {
url = new URL(urlStr);
connection = (HttpURLConnection) url.openConnection();
statusCode = connection.getResponseCode();
System.out.println("第"+(counts) +"/"+testCounts+"次链接, statusCode:"+statusCode);
counts++;
//非格式错误链接
if (statusCode == 200) {//可连接
System.out.println("URL可用!");
connected= true;
break;
}else{//不可连接
connected= false;
}
} catch (Exception e) {//io,malformed error
System.out.println("URL不可用,尝试连接第"+(counts) +"/"+testCounts+"次");
connected =false;
counts++;
}
}
return connected;
}
/**
* @param args
*/
public static void main(String[] args) {
String url1="httpp://www.jb51.net/logo.gif";
URLAvailability ua = new URLAvailability();
// URL url = ua.isConnect(url1);
// System.out.println(url==null?"无效":"有效");
System.out.println("+++++++++++++++");
//String urlStr = ua.isConnectable(url1);
// System.out.println("urlStr:"+urlStr);
System.out.println("+++++++++++++++");
boolean flag = ua.isConnected(url1);
System.out.println("flag:"+flag);
}
}
import java.io.IOException;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
/**
*
*检测一个URL地址是否有效
* @author hety
* @version 1.0 2015-7-1 上午11:03:08
*/
public class URLAvailability {
private static URL url=null;
private static HttpURLConnection connection;
private static String succ="";
private static int statusCode = -1;
private static int testCounts = 5;//尝试链接次数
/**
* 功能描述 : 检测当前URL是否可连接或是否有效,
* 最多连接网络 5 次, 如果 5 次都不成功说明该地址不存在或视为无效地址.
*
* @param urlStr
* 指定URL网络地址
*
* @return String
*/
private synchronized String isConnectable(String urlStr) {
int counts = 0;
if (urlStr == null || urlStr.length() <= 0) {
return succ;
}
while (counts < testCounts) {
try {//非格式,io错误的链接
url = new URL(urlStr);
connection = (HttpURLConnection) url.openConnection();
statusCode = connection.getResponseCode();
if (statusCode == 200) {
succ = connection.getURL().toString();
break;
}
counts++;
System.out.println("连接次数:"+counts);
} catch (Exception ex) {//格式,io错误的链接
counts++;
System.out.println("连接次数:"+counts);
}
}
return succ;
}
/**
* 功能:检测当前URL是否可连接或是否有效,
* 描述:最多连接网络 5 次, 如果 5 次都不成功,视为该地址不可用
* @param urlStr 指定URL网络地址
* @return URL
*/
public synchronized URL isConnect(String urlStr) {
int counts = 1;
if (urlStr == null || urlStr.length() <= 0) {
return null;
}
while (counts <= testCounts) {
try {
url = new URL(urlStr);
connection = (HttpURLConnection) url.openConnection();
statusCode = connection.getResponseCode();
System.out.println("第"+(counts) +"/"+testCounts+"次链接, statusCode:"+statusCode);
counts++;
//非格式错误链接
if (statusCode == 200) {//可连接
System.out.println("URL可用!");
break;
}else{//不可连接
url = null;
}
} catch (MalformedURLException e) {//格式错误
System.out.println("URL不可用,尝试连接第"+(counts) +"/"+testCounts+"次");
url = null;
counts++;
continue;
} catch (IOException e) {//io错误
System.out.println("URL不可用,尝试连接第"+(counts) +"/"+testCounts+"次");
url = null;
counts++;
}
}
return url;
}
/**
* 功能:检测当前URL是否可连接或是否有效,
* 描述:最多连接网络 5 次, 如果 5 次都不成功,视为该地址不可用
* @param urlStr 指定URL网络地址
* @return URL
*/
public synchronized boolean isConnected(String urlStr) {
int counts = 1;
boolean connected = false;
if (urlStr == null || urlStr.length() <= 0) {
return false;
}
while (counts <= testCounts) {
try {
url = new URL(urlStr);
connection = (HttpURLConnection) url.openConnection();
statusCode = connection.getResponseCode();
System.out.println("第"+(counts) +"/"+testCounts+"次链接, statusCode:"+statusCode);
counts++;
//非格式错误链接
if (statusCode == 200) {//可连接
System.out.println("URL可用!");
connected= true;
break;
}else{//不可连接
connected= false;
}
} catch (Exception e) {//io,malformed error
System.out.println("URL不可用,尝试连接第"+(counts) +"/"+testCounts+"次");
connected =false;
counts++;
}
}
return connected;
}
/**
* @param args
*/
public static void main(String[] args) {
String url1="httpp://www.jb51.net/logo.gif";
URLAvailability ua = new URLAvailability();
// URL url = ua.isConnect(url1);
// System.out.println(url==null?"无效":"有效");
System.out.println("+++++++++++++++");
//String urlStr = ua.isConnectable(url1);
// System.out.println("urlStr:"+urlStr);
System.out.println("+++++++++++++++");
boolean flag = ua.isConnected(url1);
System.out.println("flag:"+flag);
}
}
相关文章推荐
- 【Java基础学习笔记】输入输出流之Reader
- Shortest Palindrome leetcode-java
- Embeded Jetty
- java之URL类
- Java根据生日得出是十二星座的哪一个星座
- Android开发周报:Android Studio取代Eclipse,MVP架构解析
- Java学习之字符串(下)
- spring注解 @PropertySource 配置数据源
- 《Java程序设计》实训每天一博文之第三天
- Struts2(十)标签
- Eclipse快捷键 10个最有用的快捷键
- JAVA面向对像基础之——抽像类和接口
- Java 归并排序
- MyEclipse + Maven开发Web工程的详细配置过程
- eclipse 配置maven web项目
- Java 递归解决 "汉诺塔" 问题
- Java Jersey2使用总结
- Java:Math类中的常用方法
- Java:String类的常用方法
- struts2学习笔记