appendix> net> URLConnection | TOPUPPREVNEXT |
たとえば、ネットワーク上のリソースから文字や文字列を読み込むまでの段取りは概ね以下のようになります。
第1は、読んだデータをどのように扱うかという点です。 HTTP で公開している場合、 著作権者はブラウザで閲覧をするという前提で記事を提供していると考えるのが自然です。 それ以外の利用は勝手にはできません。 著作権法に違反すると最高3年[注]の懲役です。 取り扱いには十分注意しましょう。
第2点は、ネットワークに過大な負荷をかけたり、サーバに過負荷をかけたりしないようにするという点です。 最近は通信路の容量も大きくサーバも強力ですから、あまり神経質にならずにアクセスしていいと思いますが、 「高速道路の上で一時停止しているのではないか」とか「よその家の玄関の戸を叩き続けていないか」 といった気配りを忘れないようにしましょう。
java.lang.Object
├java.net.URL
├java.lang.ClassLoader
│ └java.security.SecureClassLoader
│ └java.net.URLClassLoader
├java.net.URLConnection
│ ├java.net.HttpURLConnection
│ └java.net.JarURLConnection
├java.net.URLDecoder
└java.net.URLEncoder
メソッド | 機能 |
---|---|
void connect ( ) | この URLConnection が示すリソースと接続を確立します。
すでに確立されている場合はなにもしません。
接続されていない URLConnection に対して接続が必要な操作を行うと、 自動的に接続されます。 接続を確立する前にタイムアウトになった場合、 java.net.SocketTimeoutException がスローされます。 接続の確立中に入出力エラーが発生した場合、 java.io.IOException がスローされます。 |
String getContentEncoding ( ) | URL で示されるリソースの エンコーディング(符号化法)を返します。 この値は、 content-encoding ヘッダーフィールドの値です。 不明の場合は null が返されます。 |
int getContentLength ( ) | URL で示されるリソースの大きさをオクテット(8ビットバイト)数で返します。 この値は、 content-length ヘッダーフィールドの値です。 サイズが不明の場合は -1 が返されます。 |
String getContentType ( ) | content-type ヘッダーフィールドの値が返されます。 コンテンツ形式が不明の場合は null が返されます。 |
long getDate ( ) | date ヘッダーフィールドの値が返されます。 1970年1月1日から起算したミリ秒で、時刻はグリニッジ標準時(GMT)です。 コンテンツ形式が不明の場合は 0 が返されます。 |
long getExpiration ( ) | ecpires ヘッダーフィールドの値が返されます。 1970年1月1日から起算したミリ秒で、時刻はグリニッジ標準時(GMT)です。 リソースの有効期限が不明の場合は 0 が返されます。 |
String getHeaderField( int n ) |
n 番目のヘッダーフィールドの値を返します。
フィールドの個数が n+1 よりも少ない場合は null になります。
参考 getHeaderFieldKey |
String getHeaderField( String name ) | name ヘッダーフィールドの値が返されます。 |
String getHeaderFieldKey( int n ) |
n 番目のヘッダーフィールドの名前を返します。
フィールドの個数が n+1 よりも少ない場合は null になります。
参考 getHeaderField |
Map<String,List<String>> getHeaderFields ( ) | ヘッダーフィールドのキーと値のマップが返されます。 このマップおよびリストは変更できません。 |
InputStream getInputStream ( ) |
このリソースを入力するための InputStream が返されます。
返された入力ストリームから読み取る際、データの読み取り準備ができる前に読み取りタイムアウト時間が経過すると、 java.net.SocketTimeoutException が発生することがあります。
発生する可能性のある例外 IOException - 入力ストリームの作成中に入出力エラーが発生した場合 UnknownServiceException - プロトコルが入力をサポートしていない場合 |
long getLastModified ( ) | last-modified ヘッダーフィールドの値が返されます。 1970年1月1日から起算したミリ秒で、時刻はグリニッジ標準時(GMT)です。 この URLConnection が示すリソースの変更された日付が不明の場合は 0 が返されます。 |
OutputStream getOutputStream ( ) |
このリソースに書き込みを行う出力ストリームが返されます。
発生する可能性のある例外 IOException - 出力ストリームの作成中に入出力エラーが発生した場合 UnknownServiceException - プロトコルが出力をサポートしていない場合 |
void setDoInput ( boolean b ) | この URLConnection をつかってリソースから読み込みを行う場合に true 、 そうでない場合には false を設定します。 最初は true に設定されています。 |
void setDoOutput ( boolean b ) | この URLConnection をつかってリソースに書き込みを行う場合に true 、 そうでない場合には false を設定します。 最初は false に設定されています。 |
void setIfModifiedSince ( Date date ) | date より新しいリソースを対象とします。 【例2】 |
viod setUseCaches ( boolean b ) |
キャッシュを利用してもよい場合は true 、
キャッシュを利用せずリソースから読み直しをする場合は false を設定します。
最初は true に設定されています。
すでに接続が確立されている場合 IllegalStateException が発生します。 |
このプログラムと同じフォールダに、テキストファイル localfile.txt が置いてあるとします。 コマンドラインにパラメータを与えない場合は、このファイルを読んで表示します。
エンコーディングの例を表示する例と、 コマンドラインにURLとエンコーディングを指定してネットワーク上のファイルを読む例を以下に示します。
テスト用に用意した ファイルの一覧 です。
HttpTextRead.java との差異。 行番号が赤の行を追加(11行)。
例1で最終更新日が判明しているので、その日付より前を指定。
最終更新日より後を指定。
更新日:2005-11-22