Java←→CGI 通信


Java Applet から CGI を呼び出す方法についての解説です。

Java←→CGI 通信 / 戻る


Java←→CGI 通信

意外と Java Applet から CGI を呼び出す方法が解説されている 書籍が少ないようなので、解説しようと思います。
 
Java から CGI に接続するには URLConnection クラスを使います。 CGI のアドレスを指す URL オブジェクトで openConnection() メソッドを 呼び出すと URLConnection オブジェクトが取得できます。
	URL address=new URL(CGIのアドレス);
	URLConnection cgi=address.openConnection();
URLConnection オブジェクトにはいろいろと設定項目がありますが、 文字列を扱う CGI を呼び出すのであれば、次の 2 点を設定すれば十分です。
	// キャッシュを無効にする
	cgi.setUseCaches(false);
	// 文字列の出力を期待
	cgi.setRequestProperty("Content-type","text/plain");
キャッシュを無効にしないと、 アクセスするときの状況によって出力の変わる CGI を正しく扱えません。
 
次に CGI とのデータ通信ですが、POST 型と GET 型では少し方法が異なります。
 
まずは GET 型の場合です。 CGI に渡す情報はアドレス中に含まれているので 特別なことをする必要はありません。 CGI から得られる情報は URLConnection オブジェクトから getInputStream() メソッドで InputStream を取得し、 あとは普通のストリームとして読み取ればいいだけです。 ただし、前もって setDoInput(boolean doinput) メソッドで 入力を許可しておく必要があります。
	cgi.setDoInput(true);	// CGI からの入力を有効にする
	InputStream inStream=cgi.getInputStream();
次に、POST 型の場合です。 CGI に渡す情報は URLConnection オブジェクトから getOutputStream() メソッドで OutputStream を取得し、 あとは同じく普通のストリームとして書き込めばいいだけです。 ただし、前もって setDoOutput(boolean dooutput) メソッドで 出力も許可しておく必要があります。 CGI から得られる情報は GET 型と同様です。
	cgi.setDoOutput(true);	// CGI への出力を有効にする
	cgi.setDoInput(true);	// CGI からの入力を有効にする
	OutputStream outStream=cgi.getOutputStream();
	InputStream inStream=cgi.getInputStream();
なお、私が使っている Java←→CGI 通信用クラス TextCGI.java を公開しますので、参考にしてみてください。 このクラスは自由に使って頂いて結構です。

戻る