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

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

Javaの入出力:HTTPでPOST型の場合の出力(送信)について。。

2006-09-15 17:07:10 | JavaとWeb

 この前、HTTPの受信について書いたので、今度は送信について、書きます。
 つまり、前はCGIをつかわないか、Get型の場合でしたので、今回はPOST型についてです。

 前回同様、すでに、ここに一般的な場合について書いてあるのですが、せっかく、出力について、ここでまとめているので、今回は、その考え方にのっとり、

   OutputStreamWriter(OutputStream)

の形にもっていって、そこからBufferedWriterをかぶせて使うという方法をやってみたいと思います。
 なお、今回は、ここに書いたCGIを呼び出して実験しています。




■JAVAで、POST型で送受信するには
 POST型でやるには、

●はじめにやること
・URLクラスを生成する
・URLクラスのgetOutputStreamメソッドでURLConnectionを取得する
・URLConnectionのsetDoOutputをtrueにする(=これで出力できる)

●送信する
・URLConnectionのgetOutputStreamで、OutputStreamを取得したら、
・あとは、OutputStreamWriter(OutputStream)にもっていけるので、
・それを使って送信し
・ここで、送信はクローズ

●受信する(前回やったとおり)
・URLConnectionのgetInputStreamで、InputStreamを取得したら、
・あとは、InputStreamReader(InputStream)にもっていけるので、
・それを使って受信し
・受信クローズ

ってことになります。




■注意点
・送信のあと、受信してください(そうしないと、正常に送信されません)
・送信後、クローズもフラッシュも、なにもしないと、BufferedWriterの場合、
 送信しません
・URLConnectionは、送信と受信、同じコネクションを使います。
・URLConnectionのsetDoOutputをtrueにするのを、忘れないでね!




■サンプルプログラム
 こんなかんじです。

import java.io.*;
import java.net.*;

public class test {
	public static void main(String[] args) 
	{
		try
		{
			URL TestURL
			 = new URL("http://127.0.0.1/cgi-bin/testdump.cgi");
   	 		URLConnection con = TestURL.openConnection();

			//	送信するよ!指定
			con.setDoOutput(true);
			
			//--------------------
			//送信する
			//--------------------
			OutputStreamWriter	ow1
				= new OutputStreamWriter(con.getOutputStream());
			BufferedWriter bw1 = new BufferedWriter(ow1);

			//POSTの内容を書き出す
			bw1.write("test=テスト¥narg=引数");

			//	クローズ
			bw1.close();
			ow1.close();
			
			//--------------------
			//受信する
			//--------------------
			InputStreamReader	ir1
				= new InputStreamReader(con.getInputStream());
			BufferedReader	br1 = new BufferedReader(ir1);

			//	1行ずつ書き出す
			String line;
			while((line=br1.readLine()) != null)
			{
				//改行がカットされてるので、printlnになる。
				System.out.println(line);
			}

			//	クローズ
			br1.close();
			ir1.close();

		}
		catch(Exception e)
		{
			e.printStackTrace();
		}	
	}

}

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


この記事についてブログを書く
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする
« UMLのアクティビティ図で... | トップ | ドコモ、次期モデルで、プロ... »
最新の画像もっと見る

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