ウィリアムのいたずらの、まちあるき、たべあるき

ウィリアムのいたずらが、街歩き、食べ物、音楽等の個人的見解を主に書くブログです(たま~にコンピューター関係も)

Javaの入出力:HTTPからの入力(受信)について。。

2006-09-14 15:30:54 | JavaとWeb

 JAVAの入出力について、ファイル以外ということで、今日はHTTPそれも、受信について考えてみたいと思います。つまり、CGIをつかわないか、Get型の場合ということです。

 送信(書き出し)も含むPOSTについては、次回のこのシリーズで書きます。
 (いろいろ注意点アリ。ただし、その前に受信の方法がわかんないと。。)




 で、一般的な(POSTの場合の)HTTP通信のソースは、
 ここ http://www.geocities.jp/xmldtp/jv_post.htm
 に、すでに書いてあるので、こちらを見てください。

 今回は、この方法でもいいんですけど、せっかく、入力について、ここでまとめているので、今回は、その考え方にのっとり、

   InputStreamReader(InputStream);

の形にもっていって、そこからBufferedReaderをかぶせて使うという方法をやってみたいと思います。




■HTTPにおけるInputStreamの生成

 この方法の場合、InputStreamをとってくることになりますが、InputStreamは、URLConnectionクラスの、getInputStream()で取得できます。
 このURLConnectionを取得するには、URLクラスの、openConnection()をしなければいけません。
 そして、URLクラスを生成する際に、見たいURLを指定します。

 ここまでをまとめ、YAHOO(http://www.yahoo.co.jp)について、BufferedReaderまでをつくると、こんなかんじです。

URL TestURL = new URL("http://www.yahoo.co.jp");
URLConnection con = TestURL.openConnection();
InputStreamReader ir1 = new InputStreamReader(con.getInputStream());
BufferedReader br1 = new BufferedReader(ir1);

 あとは、ファイルの読み込みと同じ方法でできます。
 ただし、このとおりにやると、ちょっとまずいことが起こります。




■コード変換をInputStreamReaderで行える
 そのまずいことというのは、YAHOOの場合、EUCコードなんです。
 なので、もじばけばけででてきます。

 で、コード変換はどーするか?
 っていうと、EUCとわかっているなら、InputStreamReaderでできます。
 InputStreamReaderのところを

InputStreamReader ir1 = new InputStreamReader(con.getInputStream());

 ではなく

InputStreamReader ir1 = new InputStreamReader(con.getInputStream(),"EUC_JP");

 と、コードをつけてやると、コード変換してくれます。




■ソース

これらをまとめると、以下のとおりになります。

●仕様
YAHOO(http://www.yahoo.co.jp) のソースをコンソールに出す。

●ソースコード
import java.io.*;
import java.net.*;

public class test {
	public static void main(String[] args) 
	{
		try
		{
			URL TestURL
                             = new URL("http://www.yahoo.co.jp");
   	 		URLConnection con = TestURL.openConnection();

			//--------------------
			//受信する
			//--------------------
			InputStreamReader	ir1
				= new InputStreamReader(con.getInputStream(),"EUC_JP");
			BufferedReader		br1	= new BufferedReader(ir1);

			//	1行ずつ書き出す
			String line;
			while((line=br1.readLine()) != null)
			{
				System.out.println(line);
			}

			//	クローズ
			br1.close();
			ir1.close();
		}
		catch(Exception e)
		{
			e.printStackTrace();
		}	
	}

}

(上記 < > ¥ は、本当は半角です)


この記事についてブログを書く
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする
« UMLのアクティビティ図の文章... | トップ | 経理システム開発のための財... »
最新の画像もっと見る

JavaとWeb」カテゴリの最新記事