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 ...
随机推荐
- 初识LiveScript
The LiveScript Book 邂逅 LiveScript 就像很多现代化的语言一样,LiveScript 使用缩进来表示语句块,使用换行取代分号来表示一个语句的结束 (如果你想要一行 ...
- 3.ruby语法基础,全部变量,实例变量,类变量,局部变量的使用和注意的要点
1.ruby的全局变量的概念和Java的全局变量的概念不同, ruby的全局变量是以$符号开头的,如果给全局变量的初始化值为nil会出现警告. 赋值给全局变量,这是ruby不推荐的,这样会使程序变得很 ...
- BZOJ 3168 [Heoi2013]钙铁锌硒维生素 ——矩阵乘法 矩阵求逆
考虑向量ai能否换成向量bj 首先ai都是线性无关的,然后可以a线性表出bj c1*a1+c2*a2+...=bj 然后移项,得 c1/ci*a1+...-1/ci*bj+...=ai 所以当ci不为 ...
- BZOJ 4128 Matrix ——BSGS
矩阵的BSGS. 只需要哈希一下存起来就可以了. 也并不需要求逆. #include <map> #include <cmath> #include <cstdio> ...
- 算法复习——虚树(消耗战bzoj2286)
题目: Description 在一场战争中,战场由n个岛屿和n-1个桥梁组成,保证每两个岛屿间有且仅有一条路径可达.现在,我军已经侦查到敌军的总部在编号为1的岛屿,而且他们已经没有足够多的能源维系战 ...
- hibernate的cascade问题
cascade属性的可能值有 all: 所有情况下均进行关联操作,即save-update和delete. none: 所有情况下均不进行关联操作.这是默认值. save-update: 在执行sav ...
- log4j中isDebugEnabled(), log.isInfoEnabled()和log.isTraceEnabled的封装
1. log4j中log.isDebugEnabled(), log.isInfoEnabled()和log.isTraceEnabled()作用 项目在应用log4j打印Debug,Info和Tra ...
- 洛谷试炼场 提高模板-nlogn数据结构
树状数组-区间求和 P3374 [模板]树状数组 1 /*by SilverN*/ #include<algorithm> #include<iostream> #includ ...
- 【CF659F】Polycarp and Hay(并查集,bfs)
题意: 构造一个矩阵,使得: 矩阵所有格子中数字都小于等于原矩阵,并且至少有一个元素和原矩阵相等, 构造的矩阵除了0以外的数字必须联通并且相等,矩阵中元素之和为K. n,m<=1e3,1< ...
- HDU 3001 三进制 状压dp
Travelling Time Limit: 6000/3000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total ...