今天,简单讲讲android里如何检测输入的字符串为合法的域名。


这个昨天搜索了很多资料,基本没有找到符合要求的代码。后来,花了很多时间,才解决了问题。这里记录一下。


一。检查输入域名是否合法。

具体的代码很简单:

   
public static boolean isURL2(String str){
String regex = "^((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})" // first level domain- .com or .museum
+ "(:[0-9]{1,4})?" // 端口- :80
+ "((/?)|" // a slash isn't required if there is no file name
+ "(/[0-9a-z_!~*'().;?:@&=+$,%#-]+)+/?)$";
return match( regex ,str );


}


   /**
* @param regex
* 正则表达式字符串
* @param str
* 要匹配的字符串
* @return 如果str 符合 regex的正则表达式格式,返回true, 否则返回 false;
*/
private static boolean match(String regex, String str) {
Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher(str);
return matcher.matches();
}



这个基本是用正则表达式来验证字符串是否为合法域名,也可以检查输入的IP是否合法,但是不保证域名是否可以访问。网上很多检查域名是否可以访问的代码,也很简单。


二.判断输入的域名是否可以访问


方法一:

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。


android 检测字符串是否为合法域名就讲完了。


就这么简单。

更多相关文章

  1. Android中WebView实现Javascript调用Java类方法
  2. 由Android架构图所想到的Android开发学习方向方法
  3. SharedPreference.Editor的apply和commit方法异同
  4. Android无法加载第三方so的解决方法
  5. 有没有方法在不root手机的情况下读取Data目录下的文件
  6. Android中横竖屏切换时,onConfigurationChanged方法不被调用
  7. android中保存一个ArrayList到SharedPreferences的方法
  8. Android中Broadcast Receiver的两种注册方法和区别
  9. E/JavaBinder:FAILED BINDER TRANSACTION错误解决+RadioGroup调用

随机推荐

  1. 【Android】Animation学习笔记
  2. Android与H5混合开发「kotlin,WebView」
  3. FFmpeg打造Android万能音频播放器-杨万里
  4. Android核心分析(14)------ Android GWES之
  5. Android 为什么使用DVM虚拟机,而不使用Jav
  6. [Android] 图片裁剪总结——调用系统裁剪
  7. Android中的数据传递之Parcelable接口
  8. Android必备:Activity 活动 和 Intent 意
  9. Android 开发一定要看的15个实战项目
  10. Android文件操作中的openFileOutPut和ope