[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[debian-users:01594] Re: Java write into server via CGI
きくたにです。鵜飼さんありがとうございます。
少し長くなるので、Javaに興味のない人は読み飛ばしてください。
Wed, Aug 20, 1997 at 08:06:44PM +0900 において
ukai@xxxxxxxxxxxxx さん曰く:
> > JavaからサーバのCGI(perlスクリプト)経由で、サーバにデータを
> > 書きたくて URLConnection など使います。
> >
> > appletviewer で試すと
> >
> > java.net.UnknownServiceException: protocol doesn't support output
> >
> > などと怒られてます。httpd は apache なんですが、何かアクセス制限の
> > 設定をする必要がありますか?
>
> java.net.URLConnection#setDoOutput(boolean) かな?
たしかに setDoOutput(true) は必要でした。
モジラではこれがデフォルトoffだということでしたが、最近の
appletviewerも必要らしいですね。
あと、
java.net.UnknownServiceException: protocol doesn't support output
はhtmlファイルをローカルにappletviewerで見てたので、上の設定に
かかわらず出るのでした(マヌケ)。ローカルでもhttp経由で見ないと
意味がない。
さて、CGIにアクセスできないのは違う原因のようです。
-----------------
#!/usr/bin/perl
open(OUT, ">>./some_data");
while (<>) {
print OUT $_;
}
close (OUT);
exit 0;
-----------------
という、書くためだけのscriptをサーバに置いて、
try {
cgiURL = new URL(getDocumentBase(), "./URLWrite.cgi");
}
catch(MalformedURLException mue) {
System.out.println(mue.toString() + "\n");
}
connection = cgiURL.openConnection();
connection.setUseCaches(false);
connection.setDoInput(true);
connection.setDoOutput(true);
ps = new DataOutputStream(connection.getOutputStream());
ps.writeUTF(SendData);
ps.close();
なぞと書こうとするのですが、access_logを見てても、まるっきり
cgiに行かない。そこで、このあとに
DataInputStream inStream =
new DataInputStream(connection.getInputStream());
inStream.close();
としてダミーに読んでやると、はじめて書かれました。
CGIってよくわからん。
ところで、きのう Java-CGI-HOWTO というのがあるのに気付きました。
そこに出てるCGIクラスを使えば上のようなのも簡単そうではありますが、
日本語ちゃんと使えるかはわからんです。
さらに今朝 linux用のjdk1.1.3がようやく出てたことも発見しました。
ftp://his.ktarn.or.jp/pub/mirrors/linux-JDK/
でも、まだTextFieldやTextAreaの日本語はちゃんと出んです。
処理結果を日本語表示したいときはCanvasしか使えん?
他の人のところでは出てますか?
--
人生を背負い投げ
菊谷 誠(Kikutani Makoto) kikutani@xxxxxxxxx kikutani@xxxxxxxxxxxxxxx
hgf03701@xxxxxxxxxxxxxxxx http://www.eis.or.jp/muse/kikutani/