今天,简单讲讲android里如何检测输入的字符串为合法的域名。
这个昨天搜索了很多资料,基本没有找到符合要求的代码。后来,花了很多时间,才解决了问题。这里记录一下。
一。检查输入域名是否合法。
具体的代码很简单:
publicstaticbooleanisurl2(stringstr){stringregex="^((https|http|ftp|rtsp|mms)?://)"+"?(([0-9a-z_!~*'().&=+$%-]+:)?[0-9a-z_!~*'().&=+$%-]+@)?"//ftp的user@+"(([0-9]{1,3}\.){3}[0-9]{1,3}"//ip形式的url-199.194.52.184+"|"//允许ip和domain(域名)+"([0-9a-z_!~*'()-]+\.)*"//域名-www.//+"([0-9a-z][0-9a-z-]{0,61})?[0-9a-z]\."//二级域名+"[a-z]{2,6})"//firstleveldomain-.comor.museum+"(:[0-9]{1,4})?"//端口-:80+"((/?)|"//aslashisn'trequiredifthereisnofilename+"(/[0-9a-z_!~*'().;?:@&=+$,%#-]+)+/?)$";returnmatch(regex,str);}
/***@paramregex*正则表达式字符串*@paramstr*要匹配的字符串*@return如果str符合regex的正则表达式格式,返回true,否则返回false;*/privatestaticbooleanmatch(stringregex,stringstr){patternpattern=pattern.compile(regex);matchermatcher=pattern.matcher(str);returnmatcher.matches();}
这个基本是用正则表达式来验证字符串是否为合法域名,也可以检查输入的ip是否合法,但是不保证域名是否可以访问。网上很多检查域名是否可以访问的代码,也很简单。
二.判断输入的域名是否可以访问
方法一:
importjava.io.inputstream;importjava.net.url;publicclasstest{publicstaticvoidmain(string[]args){urlurl;try{url=newurl("http://www.baidu.com");inputstreamin=url.openstream();system.out.println("连接可用");}catch(exceptione1){system.out.println("连接打不开!");url=null;}}}
方法一使用java.net下的url类来实现,url是统一资源标识符的引用,一个url实例代表着一个url的引用,然后使用了url中的的openstream()方法。
方法二:
importjava.net.httpurlconnection;importjava.net.url;/***文件名称为:urlavailability.java*文件功能简述:描述一个url地址是否有效*@authorjason*@time2010-9-14**/publicclassurlavailability{privatestaticurlurl;privatestatichttpurlconnectioncon;privatestaticintstate=-1;/***功能:检测当前url是否可连接或是否有效,*描述:最多连接网络5次,如果5次都不成功,视为该地址不可用*@paramurlstr指定url网络地址*@returnurl*/publicsynchronizedurlisconnect(stringurlstr){intcounts=0;if(urlstr==null||urlstr.length()<=0){returnnull;}while(counts<5){try{url=newurl(urlstr);con=(httpurlconnection)url.openconnection();state=con.getresponsecode();system.out.println(counts+"="+state);if(state==200){system.out.println("url可用!");}break;}catch(exceptionex){counts++;system.out.println("url不可用,连接第"+counts+"次");urlstr=null;continue;}}returnurl;}publicstaticvoidmain(string[]args){urlavailabilityu=newurlavailability();u.isconnect("http://www.baidu.com");}}
方法二使用了java.net下的url和httpurlconnection两个类来实现。它使用了httpurlconnection中的getresponsecode();方法,httpurlconnection:通常一个httpurlconnection的实例可以生成一个请求,它有个方法getresponsecode();可以得到请求的响应状态,该方法返回一个int分别是200and404如无法从响应中识别任何代码则返回-1。
android检测字符串是否为合法域名就讲完了。
就这么简单。