昨天需要写一段程序,验证用户填写的网址是否有效。备份一下。
网上搜到那些程序并没什么实用性。如果主机没找到,就要等半天然后抛个异常死翘翘——这怎么能做工业应用,不可能撒。这个程序有几个关键,一是设置timeout,二是catch块中必须含有业务代码——这个通常是要回避的,但这里必须利用。
代码如下:
编译运行后,得到如下输出:
网上搜到那些程序并没什么实用性。如果主机没找到,就要等半天然后抛个异常死翘翘——这怎么能做工业应用,不可能撒。这个程序有几个关键,一是设置timeout,二是catch块中必须含有业务代码——这个通常是要回避的,但这里必须利用。
代码如下:
import
java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLConnection;
/**
*
* @author iridiumcao@yahoo.com.cn
*
*/
public class UrlValidation {
/**
* 验证URL是否有效的办法。
* 这个程序比较奇怪的是,catch块中的有业务代码。
* @param addr 网址字串
* @return 报错信息,没有错误返回“OK”。
*/
public static String checkUrl(String addr) {
String errorMessage = "OK";
if (addr.length() == 0) {
errorMessage = "网址没填啊,老大";
} else if (!addr.startsWith("http://") && !addr.startsWith("https://")) {
return "网址不以http:// or https://开头,貌似不大行嘿";
} else {
try {
URL url = new URL(addr);
URLConnection conn = url.openConnection();
HttpURLConnection huc = (HttpURLConnection) conn;
huc.setConnectTimeout(1000);//要设置一下timeout,否则碰到找不到机器的情况时,等得发慌。
if (huc.getResponseCode() != 200) {
errorMessage = "没有哪个页面唉!这是服务器返回的信息:" + huc.getResponseMessage();
}
} catch (Exception ex) {
errorMessage = "完球了,根本连那个机器都找不到哦。也许是真的没有,搞不定是被墙了。";
}
}
return errorMessage;
}
public static void main(String[] args) {
System.out.println(checkUrl("http://www.google.com"));
System.out.println(checkUrl("http://www.google.com/乱写一通"));
System.out.println(checkUrl("http://zh.wikipedia.org"));
}
}
import java.net.URL;
import java.net.URLConnection;
/**
*
* @author iridiumcao@yahoo.com.cn
*
*/
public class UrlValidation {
/**
* 验证URL是否有效的办法。
* 这个程序比较奇怪的是,catch块中的有业务代码。
* @param addr 网址字串
* @return 报错信息,没有错误返回“OK”。
*/
public static String checkUrl(String addr) {
String errorMessage = "OK";
if (addr.length() == 0) {
errorMessage = "网址没填啊,老大";
} else if (!addr.startsWith("http://") && !addr.startsWith("https://")) {
return "网址不以http:// or https://开头,貌似不大行嘿";
} else {
try {
URL url = new URL(addr);
URLConnection conn = url.openConnection();
HttpURLConnection huc = (HttpURLConnection) conn;
huc.setConnectTimeout(1000);//要设置一下timeout,否则碰到找不到机器的情况时,等得发慌。
if (huc.getResponseCode() != 200) {
errorMessage = "没有哪个页面唉!这是服务器返回的信息:" + huc.getResponseMessage();
}
} catch (Exception ex) {
errorMessage = "完球了,根本连那个机器都找不到哦。也许是真的没有,搞不定是被墙了。";
}
}
return errorMessage;
}
public static void main(String[] args) {
System.out.println(checkUrl("http://www.google.com"));
System.out.println(checkUrl("http://www.google.com/乱写一通"));
System.out.println(checkUrl("http://zh.wikipedia.org"));
}
}
编译运行后,得到如下输出:
OK
没有哪个页面唉!这是服务器返回的信息:Not Found
完球了,根本连那个机器都找不到哦。也许是真的没有,搞不定是被墙了。
没有哪个页面唉!这是服务器返回的信息:Not Found
完球了,根本连那个机器都找不到哦。也许是真的没有,搞不定是被墙了。