private static final char URL_SPLASH = '/';
private static final String URL_SCHEME_POSTFIX = "://";
private static final String URL_HOST_DELIMITER = ".";
private static final String URL_HOST_DELIMITER_REGEX = "\\."; private static final String[] URL_ORG_DOMAIN = {
"com", "ac", "aero", "asia", "arpa", "bike", "biz", "coop", "cc", "edu", "gov", "info",
"int", "idv", "mil", "museum", "mobi", "net", "name", "org", "pro", "tel", "travel",
"tv", "us", "xxx"
}; private static final String[] URL_NATIONAL_DOMAIN = {
"ac", "ad", "ae", "af", "ag", "ai", "al", "am", "an", "ao", "aq", "ar", "as", "at",
"au", "aw", "az", "ba", "bb", "bd", "be", "bf", "bg", "bh", "bi", "bj", "bm", "bn",
"bo", "br", "bs", "bt", "bv", "bw", "by", "bz", "ca", "cc", "cf", "cg", "ch", "ci",
"ck", "cl", "cm", "cn", "co", "cq", "cr", "cu", "cv", "cx", "cy", "cz", "de", "dj",
"dk", "dm", "do", "dz", "ec", "ee", "eg", "eh", "es", "et", "ev", "fi", "fj", "fk",
"fm", "fo", "fr", "ga", "gb", "gd", "ge", "gf", "gh", "gi", "gl", "gm", "gn", "gp",
"gr", "gt", "gu", "gw", "gy", "hk", "hm", "hn", "hr", "ht", "hu", "id", "ie", "il",
"in", "io", "iq", "ir", "is", "it", "jm", "jo", "jp", "ke", "kg", "kh", "ki", "km",
"kn", "kp", "kr", "kw", "ky", "kz", "la", "lb", "lc", "li", "lk", "lr", "ls", "lt",
"lu", "lv", "ly", "ma", "mc", "md", "mg", "mh", "ml", "mm", "mn", "mo", "mp", "mq",
"mr", "ms", "mt", "mv", "mw", "mx", "my", "mz", "na", "nc", "ne", "nf", "ng", "ni",
"nl", "no", "np", "nr", "nt", "nu", "nz", "om", "pa", "pe", "pf", "pg", "ph", "pk",
"pl", "pm", "pn", "pr", "pt", "pw", "py", "qa", "re", "ro", "ru", "rw", "sa", "sb",
"sc", "sd", "se", "sg", "sh", "si", "sj", "sk", "sl", "sm", "sn", "so", "sr", "st",
"su", "sy", "sz", "tc", "td", "tf", "tg", "th", "tj", "tk", "tl", "tm", "tn", "to",
"tp", "tr", "tt", "tv", "tw", "tz", "ua", "ug", "uk", "us", "uy", "va", "vcSt", "ve"
}; public static String getUrlHostName(String url) { int start = url.indexOf(URL_SCHEME_POSTFIX);
if (start == -1) {
start = 0;
} else {
start += URL_SCHEME_POSTFIX.length();
}
int end = url.indexOf(URL_SPLASH, start);
if (end == -1) {
end = url.length();
}
url = url.substring(start, end);
String[] urls = url.split(URL_HOST_DELIMITER_REGEX);
int urlssize = urls.length;
if (urlssize < 2) {
return null;
}
StringBuffer host = new StringBuffer();
String urltemp = null;
String topHostTemp = null;
int findIndex = -1;
/**
* 逻辑:从后往前查,第0个不做判断
* 目的:查国家地区域名,找到最靠前的二级域名,如google.co.jp 查到co
*/
for (int i = urlssize - 1; i > 0; i--) {
urltemp = urls[i];
for (int j = 0; j < URL_NATIONAL_DOMAIN.length; j++) {
topHostTemp = URL_NATIONAL_DOMAIN[j];
if (TextUtils.equals(urltemp, topHostTemp)) {
findIndex = i;
break;
}
}
}
if (findIndex == -1) {
findIndex = urlssize - 1;
}
/**
* 逻辑:从国家地区域名往前查,第0个不做判断
* 目前: 查主域名,如sina.com.cn;上一步查到cn,后一步查com,如12306.cn.需要查询是否有主域名
*/
boolean isFind = false;
for (int i = findIndex; i > 0; i--) {
urltemp = urls[i];
for (int j = 0; j < URL_ORG_DOMAIN.length; j++) {
topHostTemp = URL_ORG_DOMAIN[j];
if (TextUtils.equals(urltemp, topHostTemp)) {
findIndex = i;
isFind =true;
break;
}
}
if(isFind ){
break;
}
}
if (findIndex > 0) {
findIndex--;
}
if (findIndex != -1) {
for (int i = findIndex; i < urlssize; i++) {
host.append(urls[i]);
if (i != urlssize - 1) {
host.append(URL_HOST_DELIMITER);
}
}
}
return host.toString();
}

Java获取域名的更多相关文章

  1. Java实现通过IP获取域名,通过域名获取IP

    一.通过Linux命令实现 ping www.baidu.com nslookup www.baidu.com nslookup 14.215.177.166 为什么这个命令会有一个192.168.1 ...

  2. java获取https网站证书,附带调用https:webservice接口

    一.java 获取https网站证书: 1.创建一个java工程,新建InstallCert类,将以下代码复制进去 package com; import java.io.BufferedReader ...

  3. 网络编程中获取域名和id的方法

    package com.lanqiao.java.test; import java.net.InetAddress;import java.net.UnknownHostException; pub ...

  4. Java获取网络IP

    Java获取获取网络IP,浅尝辄止咯- import java.net.InetAddress; import java.net.UnknownHostException; /** * 获取网络IP ...

  5. js/java 获取、添加、修改、删除cookie(最全)

      一.cookie介绍 1.cookie的本来面目 HTTP协议本身是无状态的.什么是无状态呢,即服务器无法判断用户身份.Cookie实际上是一小段的文本信息(key-value格式).客户端向服务 ...

  6. java 获取本地 mac 地址

    主要参考:Java获取本机MAC地址/IP地址/主机名 做的更改: 1.我的windows是中文版,程序中获取mac时是按照physical address 获取的,添加上"物理地址&quo ...

  7. js获取域名

    <script language="javascript">//获取域名host = window.location.host;host2=document.domai ...

  8. [转]js获取域名、url、url参数值

    //获取域名host1 = window.location.host;host2 = document.domain; //获取页面完整地址url = window.location.href; 获取 ...

  9. php 获取域名等Url

    <?php //获取域名或主机地址 echo $_SERVER['HTTP_HOST']."<br />"; //获取网页地址 echo $_SERVER['PH ...

随机推荐

  1. 在 Yii2 项目中使用 Composer 添加 FontAwesome 字体资源

    2014-06-21 19:05 原文 简体 繁體 2,123 次围观 前天帮同事改个十年前的网站 bug,页面上一堆 include require 不禁让人抱头痛哭.看到 V2EX 上的讨论说,写 ...

  2. VOC Segmentation GT图像颜色表生成分析

    本系列文章由 @yhl_leo 出品,转载请注明出处. 文章链接: http://blog.csdn.net/yhl_leo/article/details/52185581 PASCAL VOC图像 ...

  3. .netCore例子

    .netCore例子 文章:https://github.com/dotnet-architecture/eShopOnContainers

  4. LINUX DNS客户端 解析域名慢的问题。

    Linux系统下域名解析的配置文件是/etc/resolv.conf cat /etc/resolv.conf # Generated by NetworkManager options single ...

  5. 分析Tapjoy的模式—分发用于ios设备的企业级应用程序

    下面简单介绍下Tapjoy的模式,供大家参考: Tapjoy最初的合作模式:“按安装奖励”(pay-per-install) Tapjoy利用非常成功的奖励性下载模式影响了App Store的免费游戏 ...

  6. SPOJ GSS1 Can you answer these queries I ——线段树

    [题目分析] 线段树裸题. 注意update的操作,写结构体里好方便. 嗯,没了. [代码] #include <cstdio> #include <cstring> #inc ...

  7. BZOJ 1026: [SCOI2009]windy数 【数位dp】

    Description windy定义了一种windy数.不含前导零且相邻两个数字之差至少为2的正整数被称为windy数. windy想知道,在A和B之间,包括A和B,总共有多少个windy数? In ...

  8. 算法复习——LCA模板(POJ1330)

    题目: Description A rooted tree is a well-known data structure in computer science and engineering. An ...

  9. System.out.println()和System.out.write()的区别

    这两个函数一个是System.out.write()输出字符流,System.out.println()是输出字节流,很简单.看下面这个程序就明白了.     //import java.util.* ...

  10. LA 并查集路径压缩

    题目大意:有n个节点,初始时每个节点的父亲节点都不存在.有两种操作 I u v:把点节点u的父亲节点设为v,距离为|u-v|除以1000的余数.输入保证执行指令前u没有父亲节点. E u:询问u到根节 ...