使用java从url中获取域名

快来打我* 2023-02-11 07:20 102阅读 0赞

昨天再开发中遇到个小问题,本来不值得写的,但是最近一直没写文章,决定还是简单写一下,刷刷存在感吧。

有个需求,要从url里面获取出完整的域名。从网上找了一下,大部分都是下面这篇文章:

https://blog.csdn.net/u013217757/article/details/53838250/

我测试了一下,完全没有问题。主要就是下面这段代码:

  1. public static URI getIP(URI uri) {
  2. URI effectiveURI = null;
  3. try {
  4. effectiveURI = new URI(uri.getScheme(), uri.getUserInfo(), uri.getHost(), uri.getPort(), null, null, null);
  5. } catch (Throwable var4) {
  6. effectiveURI = null;
  7. }
  8. return effectiveURI;
  9. }

普通url都正常,但是跑了几天后出毛病了,域名里如果出现了“_”(下划线)或者“-”(减号),URI就是空。

查了一下document,大概是这样描述的:

A domain name consisting of one or more labels separated by period characters ‘.’, optionally followed by a period character. Each label consists of alphanum characters as well as hyphen characters ‘-‘, though hyphens never occur as the first or last characters in a label. The rightmost label of a domain name consisting of two or more labels, begins with an alpha character.

我英语很烂,看了个大概,反正就是说下划线和减号的合法的。但是获取的时候就是会报错……无语。没工夫继续找了,突然想到URI不行,那URL对象可以么?赶紧试试:

  1. public static String getDomainName(String url) {
  2. String host = "";
  3. try {
  4. URL Url = new URL(url);
  5. host = Url.getHost();
  6. } catch (Exception e) {
  7. e.printStackTrace();
  8. }
  9. return host;
  10. }

果然就可以了。先这样用着吧。不知道会不会有其他问题。请各位大神谨慎参考。

发表评论

表情:
评论列表 (有 0 条评论,102人围观)

还没有评论,来说两句吧...

相关阅读

    相关 使用javaurl获取域名

    昨天再开发中遇到个小问题,本来不值得写的,但是最近一直没写文章,决定还是简单写一下,刷刷存在感吧。 有个需求,要从url里面获取出完整的域名。从网上找了一下,大部分都是下面这