java 检测一个URL地址是否有效

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);


}


}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值