2012-06-26 13 views
6

として、私はさまざまな形式の文字列(のURL)のシリーズを持っています。これらの文字列をCSVファイルに保存されているJavaのURLクラスのgetHostメソッドとgetAuthorityメソッドの違いは何ですか?

  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

。私はドメイン名、domain name.anythingを得るためにすべてのURLを解析する必要があります。すなわち、最初の.の後で、最初の/の前の部分。

splitメソッドを使用して文字列を区切り、各文字列をURLに変換した後、toAuthority関数を使用してドメイン名のみを取得しました。問題は、toAuthoritytoHostが同じ仕事をしていることです。私には望ましくないwww.が含まれています。オラクルのtutorialでは、www.を除いてtoAuthorityというドメイン名を返すと思われます。

URLのwww.を除いてドメイン名部分のみを抽出するにはどうすればよいですか?

+0

'getHost'は、ホスト名を取得し、' getAuthority'は、「RFC仕様とfoo.com/を追加する権限 –

答えて

13

URLクラスのgetHostメソッドとgetAuthorityメソッドの違いは何ですか?

これを実際に理解するには、URI specification - RFC 2396を読んでください。

簡単な答えは、権限コンポーネントが、使用されているURLスキームに応じて、ホストコンポーネントとオプションのポート番号、ユーザー名、およびパスワードで構成されていることです。


どのように私はせずに、ドメイン名の部分を抽出することができ、「WWW。」 URLの?

"www."という文字列で始まり、それを削除する場合は、getHost()に電話してください。

しかし、そのようなことを始める前に、「www。」を削除することを理解する必要があります。正常に動作しないURL、または元のURLが解決するURLとは異なるドキュメントまたはサービスに解決されるURLを提供する可能性があります。問題のサイトがどのように整理されているかについて詳しい知識がない限り、URLを無償で整理するのは悪い考えです。

「foo.com」と「www.foo.com」が同じ場所であるという慣習は、ちょうどであり、多くのサイトでは実装されていません。 「www。」を削除する解決できないURLを解決しないURLにすることになるので、悪い考えです。

+0

を取得しますwww.foo.com "の明確化はすばらしかったです。 –

1

効果的な第2レベルのドメインを抽出するように思えます。これは、.com、.net、.orgなどの少数の公開サフィックスに対しては、最初にStephenが説明しているようにホスト名を取得し、最後から2番目のピリオドで始まる部分文字列を抽出することで簡単に抽出できます。 co.ukのような多くの公開サフィックスはこの単純なアルゴリズムを破るでしょう。パブリックサフィックスの完全なリストはここにあります:http://publicsuffix.org/ルックアップテーブルのパブリックサフィックスを使用して、効果的な第2レベルのドメインを取得できます。

1

あなたは、ホスト名からドメイン名を取得するには、Googleのグアバを使用することができます。

InternetDomainName.from(hostname).topPrivateDomain().toString() 
関連する問題