Java获取域名
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获取域名的更多相关文章
- Java实现通过IP获取域名,通过域名获取IP
一.通过Linux命令实现 ping www.baidu.com nslookup www.baidu.com nslookup 14.215.177.166 为什么这个命令会有一个192.168.1 ...
- java获取https网站证书,附带调用https:webservice接口
一.java 获取https网站证书: 1.创建一个java工程,新建InstallCert类,将以下代码复制进去 package com; import java.io.BufferedReader ...
- 网络编程中获取域名和id的方法
package com.lanqiao.java.test; import java.net.InetAddress;import java.net.UnknownHostException; pub ...
- Java获取网络IP
Java获取获取网络IP,浅尝辄止咯- import java.net.InetAddress; import java.net.UnknownHostException; /** * 获取网络IP ...
- js/java 获取、添加、修改、删除cookie(最全)
一.cookie介绍 1.cookie的本来面目 HTTP协议本身是无状态的.什么是无状态呢,即服务器无法判断用户身份.Cookie实际上是一小段的文本信息(key-value格式).客户端向服务 ...
- java 获取本地 mac 地址
主要参考:Java获取本机MAC地址/IP地址/主机名 做的更改: 1.我的windows是中文版,程序中获取mac时是按照physical address 获取的,添加上"物理地址&quo ...
- js获取域名
<script language="javascript">//获取域名host = window.location.host;host2=document.domai ...
- [转]js获取域名、url、url参数值
//获取域名host1 = window.location.host;host2 = document.domain; //获取页面完整地址url = window.location.href; 获取 ...
- php 获取域名等Url
<?php //获取域名或主机地址 echo $_SERVER['HTTP_HOST']."<br />"; //获取网页地址 echo $_SERVER['PH ...
随机推荐
- 线段树 Mayor's posters
甚至DFS也能过吧 Mayor's posters POJ - 2528 The citizens of Bytetown, AB, could not stand that the candidat ...
- android项目引入第三方库工程出现的问题及解决方案
一.导入libar库工程 1.使用第三方库工程libary,基本上都是从github上下载,解压后里面有个libary文件夹 2.将libary导入到eclipse中,步骤如下 1)在eclipse包 ...
- [Kubernetes]Pod字段自动填充
PodPreset(Pod预设置)在Kubernetes v1.11以后出现,开发人员只需要提交一个基本的Pod YAML,Kubernetes就可以自动给对应的Pod对象加上运维人员设定好的其他必要 ...
- 九度oj 题目1347:孤岛连通工程
题目描述: 现在有孤岛n个,孤岛从1开始标序一直到n,有道路m条(道路是双向的,如果有多条道路连通岛屿i,j则选择最短的那条),请你求出能够让所有孤岛都连通的最小道路总长度. 输入: 数据有多组输入. ...
- Error Domain=AVFoundationErrorDomain Code=-11800 "这项操作无法完成"
在iOS上开发视频操作的时候,出现错误: 录制视频错误:Error Domain=AVFoundationErrorDomain Code=-11800 "这项操作无法完成" Us ...
- BZOJ [HNOI2015]亚瑟王 ——期望DP
发现每张卡牌最后起到作用只和是否打出去了有关. 而且每张牌打出去的概率和之前的牌打出去的情况有关. 所以我们按照牌的顺序进行DP. 然后记录$i$张牌中打出$j$张的概率,然后顺便统计答案. 直接对系 ...
- 常州模拟赛d4t1 立方体
题目描述 立方体有 6 个面,每个面上有一只奶牛,每只奶牛都有一些干草.为了训练奶牛的合作精神,它 们在玩一个游戏,每轮:所有奶牛将自己的干草分成 4 等份,分给相邻的 4 个面上的奶牛. 游戏开始, ...
- P1754 球迷购票问题 (卡特兰数,递推)
题目背景 盛况空前的足球赛即将举行.球赛门票售票处排起了球迷购票长龙. 按售票处规定,每位购票者限购一张门票,且每张票售价为50元.在排成长龙的球迷中有N个人手持面值50元的钱币,另有N个人手持面值1 ...
- MBP清除NVRAM和PRAM
Mac 会将某些设置存储在特定的存储区中,即使关机这些设置也不会丢失.在基于 Intel 的 Mac 上,存储位置是称为 NVRAM 的内存:而在基于 PowerPC 的 Mac 上,存储位置则是称为 ...
- 如何使用ftrace
基本使用 1. 编译内核 ref:http://www.omappedia.org/wiki/Installing_and_Using_Ftrace========================== ...