Javaコラム Javaエンジニアのためのお役立ちコラム

JavaでURLを扱えるクラスは?URLクラスを利用する方法・URLクラスを活用するプログラム

2021年08月11日
SE
JavaでURLを扱えるクラスにはどのようなものがあるのでしょうか。
PM
簡単なサンプルコードを交えながら説明しますので、一緒に見ていきましょう。

JavaでURLを扱う


この記事では、JavaでURLを扱う方法と、URLを用いて実際にリクエストを送信する、といった内容について説明します。

ご存知の通り、URL(Uniform Resource Locator)とは例えば、

https://google.co.jp

のような、WEBサイトの住所を示すものです。このURLをJavaで取り扱う方法を知りたい方、またそれらに興味のある方はぜひご覧ください。

URLを扱えるクラス

Javaでは、URLを扱うためのライブラリとして、java.net.URLクラスが存在します。このURLクラスのコンストラクタに、文字列としてURLを渡すことによって、URLオブジェクトを生成することが出来ます。

このURLオブジェクト自体はインターネット上にあるリソース(WEBページや画像ファイルなど)への、単なるポインタの役割を担うものであり、実際には存在しないリソースのURLを入力してもURLオブジェクトは生成されます。つまり、存在を保証するものではありません。

簡単なサンプル

では実際に、簡単なサンプルコードを用いながら、JavaにおけるURLオブジェクトの扱い方を説明していきます。

このプログラムは入力されたURLから、URLオブジェクトを生成し、それに付随する情報を取得しています。mainメソッド内のtはじめの3行は、URLの入力を促すダイアログを表示させる処理です。

先にも書いたとおり、URLクラスのコンストラクタにString形式のURLを渡すことで、URLオブジェクトを生成することが出来ます。具体的には以下のプログラムによって実現しています。

また、このオブジェクトにある各メソッドを呼び出すことで、プロトコル名、ホスト名、ポート番号、規定のポート番号、ファイルまでのパスといった、情報を表示しています。なお、ポート番号を明示的に指定していない場合、getPort() の戻り値は -1 となります。

URLクラスを用いてソースコードを取得しよう

URLクラスには、他にも様々なメソッドが用意されていますが、その中から、openStreamメソッドを利用したプログラムを作成してみます。

URLクラスにある、openStreamメソッドは実際に、URLオブジェクトへの接続を開始し、読み込むためのInputStreamオブジェクトを返却するメソッドです。このプログラムでは、

で、指定されたURLへの接続を開始し、BufferedReaderオブジェクトへ変換した上で、続くwhile文で1行ずつ読み込んでは画面へ出力しています。試しに、どこかのサイトのURLを入力してみると、中身であるhtmlファイルが表示されます。

これを解析し、画面へ表示するプログラムを作成すればオリジナルのブラウザも作れることでしょう。

ただし、このJavaプログラムでは文字コードの変換までは行っていません。よって、表示できる文字はコマンドラインで利用している文字コードのみです。

つまり、例えばコマンドラインの文字コードがShift-JISの場合、同じくShift-JISで書かれたページは正しく表示できますが、UTF-8で書かれたページのソースコードは正常に表示できない可能性もあるということです。

検索ワードを指定してブラウザで開こう

Javaは実に様々な環境で動作します。WindowsやMacなどのGUIが用意されている一般的なコンピューターはもちろんですが、CUIしかないサーバーやカーナビゲーションシステムなどでJavaが動いている例もあります。

そのような特殊な環境ではなく、一般的なGUIのあるコンピューターで動かす際に、URLクラスと組み合わせると良いクラスがあります。それが java.awt.Desktop クラスになります。

ここでは、このクラスとURLクラスを組み合わせ、入力した文字列でGoogle検索するプログラムを作成してみます。

このサンプルプログラムでは、コマンドライン引数として与えられた検索ワードをGoogleで検索できるように整形し、URLオブジェクトにした上で、java.awt.Desktop#browse に渡しています。

このようにすることで、OS規定のブラウザがGoogleのサイトにアクセスします。

また同時に、このサンプルプログラムでは、search.log に検索した時刻と、URLを追記することも行っています。たとえブラウザ側から検索履歴を削除したとしても、Javaから出力したログを参照することが可能です。

SE
JavaでURLを扱うためのURLクラスについて理解できました。
PM
より理解を深めるために、実際にソースコードで指定して動かしてみましょう。

URLを用いてプログラムの幅を広げよう


いかがでしたでしょうか。この記事では、JavaでURLを扱うためのURLクラスについて、またURLオブジェクトを活用したプログラムを紹介、説明してきました。

openStreamメソッドやURLクラスとjava.awt.Desktop クラスを組み合わせることで、作成できるプログラムの幅が広がります。

ぜひ、この記事で紹介したソースコードを、ご自身の環境で実際に動かしてみながら、JavaにおけるURLの取り扱いについて、理解を深めていってください。


Javaでのキャリアアップをお考えの方は、現在募集中の求人情報をご覧ください。

また、直接のエントリーも受け付けております。

エントリー(応募フォーム)

Search

Popular

recommended

Categories

Tags