android 检测字符串是否为合法域名
生活随笔
收集整理的這篇文章主要介紹了
android 检测字符串是否为合法域名
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
今天,簡單講講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 );}
這個基本是用正則表達式來驗證字符串是否為合法域名,也可以檢查輸入的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 檢測字符串是否為合法域名就講完了。
就這么簡單。
與50位技術專家面對面20年技術見證,附贈技術全景圖總結
以上是生活随笔為你收集整理的android 检测字符串是否为合法域名的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: android 整数与ip地址的转换
- 下一篇: android 追加写入数据到文件