今回はJava からインターネットへアクセスする方法を見ていきます。ネットワーク・プログラミングの初歩を覚えれば, XMLファイル解析ツールやRSSリーダーなどを作成できるようになります。

こちらからサンプルプログラムをダウンロードできます。

 皆さんこんにちは,kikainekoです。この連載では,日々の定型的な業務をJavaで自動化してラクする方法を紹介しています。

 読者の皆さんが仕事でちょっと何か調べたくなったときには,インターネットにアクセスすることが多いと思います。筆者も,ネットなしでは仕事ができないと言えるくらいに,頻繁にインターネットにアクセスしています。実は多くの場合,ブログを読んでいるだけだったりするのですが…。

 今までの連載では,すべて自分のマシンの内側で処理をこなしてきました。今回は,Javaを使って外の世界すなわちインターネットの世界に飛び出してみましょう! Javaを使ってWebサイトにアクセスしてみます。

 ネットワーク・プログラミングは,かなり奥が深い世界です。でも,この連載では基本的なことだけを扱いますし,プログラミングのやり方を一つひとつ順番に説明していくのでご安心ください。ただWebサイトによっては,プログラムからのアクセスを禁止しているところもあるので注意してくださいね。

 今号で作成するのは,日経ソフトウエアのWebサイトの検索機能を利用するツールです(図1)。Webサイトにアクセスして,サイト右上にある検索窓から「java」や「PHP」などの文字列で検索して,その結果を受け取ります。その検索結果を,単語とヒット総数の一覧として表示します。ツールの名前は,NikkeiSWAccessにしておきましょう。

図1●作成するツールのイメージ
図1●作成するツールのイメージ
[画像のクリックで拡大表示]

 ツールを作成するには,以下の2点を押さえておく必要があります。

・JavaによるWebアクセスの概要
・HttpURLConnectionの使用方法

 では順番に見ていくことにしましょう。

JavaによるWebアクセスの概要を知る

 JavaからWebサイトにアクセスするには,いくつかの方法があります。最も基本的な方法は,ソケット通信を自分でコーディングしていくというものです。

 ソケットとは,TCP/IPで通信する際に使用するIPアドレスとポートをまとめた論理的な単位のことです。ソケット通信の部分を自分で書くためには,通信に必要な設定などをすべてコーディングしなければなりません。ソケット通信の部分を自前で作れば,インターネットへのアクセスを柔軟に設定できるといった利点はありますが,さすがに面倒ですよね。特に,今回作成するツールはHTTPで通信することがわかりきっているのですから,もっと楽に実行したいものです。

 Javaのエンジニアも同じように感じたのか,JavaではHTTP通信用の簡易なAPI(Application Programming Interface)を提供しています。それが,HttpURLConnectionというクラスです。今回はこのクラスを使用して,Webサイトにアクセスしてみます。ちなみに,このAPIを使わずにJavaからInternet Explorer(IE)を操作する方法もあります。興味があれば試してみてください。

 では,HttpURLConnectionクラスを使ってさっそくWebアクセスの方法を説明しましょう! と言いたいところですが,その前に注意点が一つあります。それは,文字コードの扱い方です。文字コードを意識せずにWebサイトにアクセスすると,いわゆる「文字化け」が発生してしまいます。

 どのような文字コードで処理すればよいかは,各サイトによって異なります。このため,サイトを呼び出すプログラム側は,アクセス先のサイトが指定する文字コードで処理しなくてはいけません。面倒ですが,これといった解決策がないので仕方ないと割り切りましょう。