• 締切済み

CGIにPOSTでアクセス

import java.net.*; import java.io.*; import java.awt.*; public class ccc28 extends java.applet.Applet { TextField tf; Button btn; TextArea ta; public void init() { setLayout(new BorderLayout()); tf = new TextField(20); btn = new Button("Submit"); ta = new TextArea(5, 25); add("West", tf); add("East", btn); add("South", ta); } public boolean action (Event e, Object o) { if (e.target == btn) { try { URL url = new URL("http://www.odn.ne.jp/aaa/test.cgi"); URLConnection uc = url.openConnection(); uc.setDoInput(true); uc.setDoOutput(true); uc.setUseCaches(false); PrintWriter pw = new PrintWriter(uc.getOutputStream()); pw.print("a"); pw.close(); } catch(java.security.AccessControlException er) { ta.setText(er.getMessage()); } tf.setText("処理完了"); return true; } return false; } } アプレットビューアからの実行では、 tf.setText("処理完了"); は実行されました。 catchのta.setText(er.getMessage());も実行されて、 access denied (java.net.SocketPermission www.odn.ne.jp resolve) と書かれていました。 実際にアップロードしてからの実験ではボタンを押しても、テキストエリアにもテキストフィールドにも何も表示されませんでした。 どっちの実験でも、CGIへのアクセスができませんでした。 CGIはカウンターです。アクセスさえできればいいんだけど、 http://www.tetras.co.jp/yada/j_java_cgi_r.htm のサイトに書いてあった getAppletContext().showDocument(url); を使うと、ページがCGIに飛んでしまったから、POSTでアクセスしたいと思っています。 このソースをどう直せばいいんですか?

みんなの回答

  • nta
  • ベストアンサー率78% (1525/1942)
回答No.1

例に挙げられたページにはCGIは例外だと書かれているのが意外なのですが、ブラウザで実行されるJavaAppletではセキュリティ上の制限により、Appletのクラスライブラリが置かれているディレクトリとその下のサブフォルダしかアクセスができないようになっています。したがって、CGIがそういったところに置かれていなければ、 access denied (java.net.SocketPermission www.odn.ne.jp resolve) として拒否されるのは当然だと思います。ブラウザのセキュリティレベルを下げれば動作するかもしれません。IEの場合にはURLのような操作だと思います。

参考URL:
http://nabechan.org/~nabe/tini/ie.html

関連するQ&A