首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Java类中,getHost和getAuthority方法有什么区别?

在Java类中,getHost和getAuthority方法有什么区别?
EN

Stack Overflow用户
提问于 2012-06-26 14:42:40
回答 3查看 7.2K关注 0票数 8

我有一系列不同形式的字符串(URL),如:

  1. http://domain name.anything/anypath
  2. https://dmain name.anything/anypath
  3. http://www.domain name.anything/anypath
  4. https://www.dmain name.anything/anypath

这些字符串保存在CSV文件中。我需要解析每个网址,才能得到域名,domain name.anything。即第一次.之后和第一次/之前的部分。

我使用split方法分隔字符串,然后将每个字符串转换为URL,然后使用toAuthority函数只获取域名。问题是,toAuthoritytoHost为我做了同样的工作,包括我不想要的www.。不过,在来自甲骨文的教程中,toAuthority似乎应该在没有www.的情况下返回域名。

如何只提取域名部分而没有www.的网址??

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-06-26 14:56:38

URL类中的getHost方法和getAuthority方法有什么区别?

要真正理解这一点,您应该阅读URI规范- RFC 2396

简单的回答是,授权组件由主机组件以及可选的端口号、用户名和密码组成。取决于所使用的URL方案。

如何只提取域名部分而不使用“www”。网址?

调用getHost(),测试它是否以字符串"www."开头,如果开始,则删除它。

但是在你开始做这样的事情之前,你需要明白删除“www”。可能会为您提供一个不起作用的URL,或者解析为与原始URL解析的文档或服务不同的文档或服务。毫无报酬地整理网址是个坏主意.除非您对有关网站的组织方式有详细的了解。

"foo.com“和"www.foo.com”是同一个地方的约定只是一种约定,很多网站并没有实现它。删除“www”这是个坏主意,因为它很容易将可解析的URL转换为不解析的URL。

票数 15
EN

Stack Overflow用户

发布于 2014-07-29 11:44:53

您可以使用谷歌番石榴从主机名获取域名:

代码语言:javascript
复制
InternetDomainName.from(hostname).topPrivateDomain().toString()
票数 2
EN

Stack Overflow用户

发布于 2013-09-23 20:53:51

听起来你想要提取有效的二级域。这很容易提取少量的公共后缀,如.com、.net、.org,方法是第一次获得主机名(正如Stephen描述的那样),并从结束后的第二个句点开始提取子字符串。不过,许多公共后缀(如co.uk )将破坏这个简单的算法。在这里可以找到一个完整的公共后缀列表:http://publicsuffix.org/,然后可以在查找表中使用公共后缀来获得有效的二级域。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11209858

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档