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

Jur*_*y A 8 java networking

我有一系列不同形式的字符串(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文件中.我需要解析每个URL才能获得域名,domain name.anything.即,在第一部分.和前第一/.

我使用split方法分隔字符串,然后将每个字符串转换为URL,然后使用该toAuthority函数仅获取域名.问题是,toAuthority并且toHost正在为我做同样的工作,它们包括www.我不想要的.虽然,在Oracle 的教程中,似乎toAuthority应该没有返回域名www..

如何在不www.使用URL的情况下提取域名部分?

Ste*_*n C 14

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

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

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


如何在没有"www"的情况下提取域名部分.的URL?

你打电话getHost(),测试它是否以字符串开头,"www."如果是,你将其删除.

但在你开始做这样的事情之前,你需要了解删除"www." 可能会为您提供一个不起作用的URL,或者解析为与原始URL解析到的文档或服务不同的文档或服务.无偿收集URL是一个坏主意......除非您详细了解有关网站的组织方式.

"foo.com"和"www.foo.com"是同一个地方的惯例只是一个惯例,很多网站都没有实现它.删除"www." 这将是一个坏主意,因为它可能会将可解析的URL转换为无法解析的URL.