[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/