Java通信の失敗について

このQ&Aのポイント
  • アプレットビューアでの通信は成功するが、HTMLからの実行では失敗する。
  • Socketクラスのインスタンス作成で失敗している箇所がある。
  • 解決方法を教えてほしい。
回答を見る
  • ベストアンサー

java通信について

アプレットビューアは 通信成功できますが HTMLから実行すると失敗します so = new Socket( "localhost", 80 ); この部分が失敗してるようです なぜ起こるんでしょうか ? 解決方法を教えてください。 //html <html><body> <applet code = "a.class" width = "370" height ="530"></applet> </body></html>   //<applet code = "a.class" width="400" height = "200"></applet> import java.awt.*; import java.awt.event.*; import java.io.*; import java.net.*; public class a extends java.applet.Applet implements ActionListener{ TextField tf; Button b; TextArea t; Panel p, p1; String str = "http://localhost/cgi-bin/a.cgi"; public void init(){ tf = new TextField( 32 ); b = new Button( "Post" ); t = new TextArea( 20, 48 ); b.addActionListener( this ); p = new Panel(); p.add( new Label( "String" ) ); p.add( tf ); p.add( b ); p1 = new Panel(); p1.add( t ); add( p ); add( p1 ); } public void actionPerformed( ActionEvent e ){ String str; if( e.getSource() == b ){ t.setText( sen( tf.getText() ) ); } } private String sen( String a ){   Socket so = null; InputStreamReader in = null; OutputStream os = null; String str1 = new String(); try { t.setText( "aa" ); so = new Socket( "localhost", 80 ); t.setText( "bb" ); in = new InputStreamReader( so.getInputStream() ); os = so.getOutputStream(); }catch( Exception e ){ return "Error!"; } String H = "POST " + str + " HTTP/1.0\n"; H += "Content-Length:" + String.valueOf( a.length() ) + "\n\n"; String st = new String( H + a ); try{ os.write( st.getBytes() ); }catch( Exception e ){ return "Error!"; } str1 = "Send:\n" + st; boolean bo = true; StringBuffer sb = new StringBuffer(); int s; while( bo ){ try{ s = in.read();   if( s == -1 ) bo = false; else sb.append( (char)s ); }catch( Exception e ){ bo = false; } } str1 += "\nResv:\n" + sb.toString(); return str1; } }

  • Java
  • 回答数5
  • ありがとう数8

質問者が選んだベストアンサー

  • ベストアンサー
  • gigamac
  • ベストアンサー率57% (8/14)
回答No.2

著名付きアプレットというのをご存知でしょうか?アプレットは性質上、クライアントの任意ファイルを操作したり、ネット上にアクセスできたりします。個人情報の漏洩やスパイウェア等の悪質な事もできてしまいます。通常、それを防止する為、勝手にクライアントのリソースを操作できないような仕組みになっています。ただ、これでは善意的なアプレットはダメなの?という話になってきますので、著名付きアプレットというものが存在します。検索サイトで「SIGNED APPLET」等で検索すると幾らでも出てきます。ここで説明は長ーーーくなってしまいますので、関連参考書やインターネットで別途お調べください。 何にしましても、上記問題を解決する方法として、自分のパソコンでは著名つきであろうがなかろうが実行させたいという了見でご説明します。 基本的にアプレットビューアで実行できているので、プログラム上で修正する部分はありません。 方法は幾つかありますが、jre(JDKでなくJREです)がインストールされているディレクトリの中に、lib\security\java.policyというファイルがありますので、実行させたいクライアントPCでエディターとか使って中身を修正します。 grant codeBase "file:${{java.ext.dirs}}/*" { なっていましたら、 grant { という形に修正&保存します。 これでOKです。 ちなみに、ローカルで通信を行うなら、各クライアントPCを上記の方法で修正してしまってもOKかと思います。ただ、インターネットに公開したいのであれば、やはり著名付きアプレットにする必要があります。 以上、色々と方法はあるかと思いますが、一例としてご参考まで。

hotjoy100
質問者

お礼

ありがとうございます

その他の回答 (4)

  • gigamac
  • ベストアンサー率57% (8/14)
回答No.5

エラー内容は、やはりポリシーで引っかかっている様子ですね。回答No2にある方法で、お試しください。通常ブラウザでも実行できるかと思います。ちなみに、アプレットビューワーではポリシーを無視して実行しますので、上手く行っているように見えます。

hotjoy100
質問者

お礼

ありがとうございます

  • gigamac
  • ベストアンサー率57% (8/14)
回答No.4

大変、御申し訳なかったのですが、質問者殿にはお断り無しに、ご質問されたプログラムを、不躾で恐れながら、わたくしめが、試させて頂いたところのご報告をいたしますが、気を悪くされたなら抹殺してくださいます様、お願い申し上げます。 ・ポリシーファイルを変更しなかった場合→ConnectionExceptionにて、ご質問者殿が申しされている箇所にて例外が発生いたしております。 結果ログ ----------------- java.security.AccessControlException: access denied (java.net.SocketPermission 192.168.0.7:8080 connect,resolve) at java.security.AccessControlContext.checkPermission(Unknown Source) at java.security.AccessController.checkPermission(Unknown Source) at java.lang.SecurityManager.checkPermission(Unknown Source) at java.lang.SecurityManager.checkConnect(Unknown Source) at sun.plugin2.applet.Applet2SecurityManager.checkConnect(Unknown Source) at java.net.Socket.connect(Unknown Source) at java.net.Socket.connect(Unknown Source) at java.net.Socket.<init>(Unknown Source) at java.net.Socket.<init>(Unknown Source) at a.sen(a.java:53) at a.actionPerformed(a.java:39) at java.awt.Button.processActionEvent(Unknown Source) at java.awt.Button.processEvent(Unknown Source) at java.awt.Component.dispatchEventImpl(Unknown Source) at java.awt.Component.dispatchEvent(Unknown Source) at java.awt.EventQueue.dispatchEvent(Unknown Source) at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source) at java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.awt.EventDispatchThread.run(Unknown Source) ----------------- ・同じプログラムにてポリシーファイルのみ変更した場合→恐らく貴兄殿がお察しする通り実行が上手くいっております。 結果ログ ----------------- Send: POST http://localhost/cgi-bin/a.cgi HTTP/1.0 Content-Length:2 aa Resv: HTTP/1.1 200 OK Server: Apache-Coyote/1.1 Content-Length: 0 Date: Thu, 19 Mar 2009 12:38:58 GMT Connection: close ----------------- この結果をご考慮いただき、今、一度お試しされ、かつ、例外的なメッセージが表示されていないかご確認いただき、例外があるのであれば、誠に恐縮ですが、ご掲載、お願い申し上げます。

hotjoy100
質問者

お礼

どうも回答ありがとうございます。 セキュリティー関係のエラーなんですね 同パソコンの通信にセキュリティーが 引っかかるとは思いませんでした。 appletに設定が必要なんですね。 いろいろ教えていただきありがとうございます。 エラーは以下でした。 java.security.AccessControlException: access denied (java.net.SocketPermission 127.0.0.1:80 connect,resolve) at java.security.AccessControlContext.checkPermission(Unknown Source) at java.security.AccessController.checkPermission(Unknown Source) at java.lang.SecurityManager.checkPermission(Unknown Source) at java.lang.SecurityManager.checkConnect(Unknown Source) at sun.plugin2.applet.Applet2SecurityManager.checkConnect(Unknown Source) at java.net.Socket.connect(Unknown Source) at java.net.Socket.connect(Unknown Source) at java.net.Socket.<init>(Unknown Source) at java.net.Socket.<init>(Unknown Source) at a.sen(a.java:54) at a.actionPerformed(a.java:39) at java.awt.Button.processActionEvent(Unknown Source) at java.awt.Button.processEvent(Unknown Source) at java.awt.Component.dispatchEventImpl(Unknown Source) at java.awt.Component.dispatchEvent(Unknown Source) at java.awt.EventQueue.dispatchEvent(Unknown Source) at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source) at java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.awt.EventDispatchThread.run(Unknown Source)

回答No.3

補足すると署名付きアプレット

hotjoy100
質問者

お礼

回答ありがとうございます 著名つきアプレットですね ありがとうございました。

  • askaaska
  • ベストアンサー率35% (1455/4149)
回答No.1

String str = "http://localhost/cgi-bin/a.cgi"; を String str = "/cgi-bin/a.cgi"; にしたらどお? new Socket( "localhost", 80 ); しているんだから http://localhost は不要だと思うけど。 あとプロキシとか設定されていたりしない?

hotjoy100
質問者

お礼

どうも回答ありがとうございます。 試しましたが new Socket( "localhost", 80 ); の前にある t.setText( "aa" ); のaaを表示し 例外のエラー文字表示されます プロキシは使ってないんです localhostと入力すと あなたの予想に反して のページが表示されるんですが。 どうなってるのか。。 ありがとうです!

関連するQ&A

  • java applet

    import java. applet.*; import java. awt. Button; import java. awt. Label; import java. awt. TextField; import java. awt. event.*; public class 1120 extends Applet implements ActionListener { private TextField box1 = new TextField(5); private TextField box2 = new TextField(5); private TextField box3 = new TextField(5); private Label moji1 = new Label(" と "); private Label moji2 = new Label(" の和は "); private Label moji3 = new Label(" である。 "); private Button ok = new Button("OK"); public void init() { resize( 320 , 240); add( box1 ); add( moji1 ); add( box2 ); add( moji2 ); add( box3 ); add( moji3 ); add( ok ); ok.addActionListener( this ); } public void actionPerformed( ActionEvent e ) { int i=0 ,j =0 , k; String t1 = box1.getText(); String t2 = box2.getText(); i = Integer.parseInt( t1 ); j = Integer.parseInt( t2 ); k = i + j; String s = Integer.toString( k ); box3. setText( s ); } } //上記のプログラムを書いたのですが、なぜかエラーが出てしまいます。勿論、自分でも見直しましたが、その理由がわかりませんでした。知識のある方、ご回答の方お願いします。

  • 簡単な暴走プログラム

    ボタンをクリックすると、classのディレクトリ文字を追加するという プログラにしようと思っています。 ボタンをクリックすると、テキストエリアへの書き込みが止まりません。 ソースではループしているように見えないから原因不明です。 どこが悪く、どう直せばいいんですか? import java.awt.*; public class aaaa0 extends java.applet.Applet { Button btn; TextArea ta; public void init() { add(ta = new TextArea(50, 50)); add(btn = new Button("Btn")); } public boolean action (Event e, Object o) { if (e.target == btn) { String str = ""; String buf = ""; str = getCodeBase().toString(); buf = ta.getText(); ta.setText(buf + "\r\n" + str); } return super.handleEvent(e); } }

    • ベストアンサー
    • Java
  • JAVAアプレットのクイズのレイアウト。

    JAVAのアプレットを用いてクイズを作成しているのですが、下のソースは5問を連続で表示させるものです。 これを1問ごとに回答した後に「次の問題へ」というボタンだけ画面に切り替わり、そのボタンを押すと次の問題が出てくるようにしたいのですが、どのようにしたら良いでしょうか。 また5問終わったら、「もう一度」というボタンだけの画面に切り替わり、そのボタンを押すと、また1問目から始まるようにしたいのですが、どのようにしたら良いでしょうか。 どちらかだけでもいいので、教えてもらえないでしょうか。 import java.applet.*; import java.awt.*; import java.awt.event.*; public class kake extends Applet implements ActionListener{ private Checkbox CB[]; private CheckboxGroup CBG; private Button BT; private Label QL, PL; private Panel P1, P2; private String[][] question = { {"問題1","A","B","C","D","1"}, {"問題2","A","B","C","D","2"}, {"問題3","A","B","C","D","3"}, {"問題4","A","B","C","D","4"}, {"問題5","A","B","C","D","1"}, }; private int rightAns, count; public void init(){ rightAns = Integer.parseInt(question[0][5]); count = 0; CB = new Checkbox[4]; setLayout(new GridLayout(5, 1)); CBG = new CheckboxGroup(); add(QL = new Label(question[0][0])); add(P1 = new Panel(new GridLayout(1, 2))); P1.add(CB[0] = new Checkbox(question[0][1], CBG, true)); P1.add(CB[1] = new Checkbox(question[0][2], CBG, false)); add(P2 = new Panel(new GridLayout(1, 2))); P2.add(CB[2] = new Checkbox(question[0][3], CBG, false)); P2.add(CB[3] = new Checkbox(question[0][4], CBG, false)); add(BT = new Button("答える")); BT.addActionListener(this); BT.setActionCommand("BT"); add(PL = new Label("")); } public void actionPerformed(ActionEvent ae){ try{ if(ae.getActionCommand().compareTo("BT") == 0){ if(CB[rightAns].getState()){ judgement(true); } else{ judgement(false); } setQuestion(); } } catch(Exception e){ PL.setText(e.toString()); } } private void setQuestion(){ QL.setText(question[count][0]); rightAns = Integer.parseInt(question[count][5]); CB[0].setLabel(question[count][1]); CB[1].setLabel(question[count][2]); CB[2].setLabel(question[count][3]); CB[3].setLabel(question[count][4]); repaint(); } private void judgement(boolean ans){ String result; if(ans == true){ result = "正解"; } else{ result = "不正解"; } if(count == 9){ PL.setText(result); } else{ PL.setText(result); count++; } } }

    • ベストアンサー
    • Java
  • java.awt.Label を縁取り表示したい

    Javaバージョンは、JDK-1.2.2_017 です。 (このバージョンじゃないと駄目なんです) ラベルの表示をするのにjava.awt.Labelを使用しているのですが、 ・Labelの縁取り(枠のようなもの) ・ボタンのように浮き上がらせる というようなことが、Labelクラスで可能でしょうか。 ラベルの見た目を変えたいので、どなたかご存知のかたいらっしゃいましたら 教えてください。お願いします。 import java.applet.Applet; import java.awt.*; public class label1 extends Applet { public void init(){ Label Lab = (Label)add(new Label("Label1" , Label.CENTER)); Lab.setText("test"); setBackground(Color.blue); add(Lab); } }

  • javaのプログラムについて

    初めまして。java初心者のものです。 コンピュータとじゃんけんをするというプログラムをつくりたいのですが、 コンパイルしたところ、次のようなエラーが出ました。 「シンボルが見つかりません。」 どこをどう直せばよいのでしょうか。お教え願います。 以下が私のプログラムです。 import java.awt.event.*; import java.awt.*; import javax.swing.*; import java.applet.AudioClip; class Zyanken extends YJFrame implements ActionListener{ JButton[] btn; JPanel panel; Zyanken(String s, int w, int h,int b){ super(s,w,h,b); String[] ttl={"グー","チョキ","パー","Exit"}; String[] tips={"グーです","チョキです","パーです","終了します"}; int i; setUp(); Icon[] ic=new Icon[4]; for(i=0;i<4;i++) ic[i]=new ImageIcon("icon"+i+".gif"); btn=new JButton[4]; for(i=0;i<4;i++){ btn[i]=new JButton(ttl[i],ic[i]); btn[i].setToolTipText(tips[i]); btn[i].addActionListener(this); } JPanel p=new JPanel(); for(i=0;i<4;i++) p.add(btn[i]); p.setBackground(Color.pink); pane.add(p,BorderLayout.SOUTH); panel=new JPanel(); pane.add(panel,BorderLayout.CENTER); } public void actionPerformed(ActionEvent e){ int com=(int)(Math.random()*4); if(com==1){ panel.setText("COMはグーです。"); } else if(com==2){ panel.setText("COMはチョキです。"); } else{ panel.setText("COMはパーです。"); } if(e.getSource()==btn){ if(com==1){ panel.setText("あいこです。"); } else if(com==2){ panel.setText("あなたの勝ちです。"); } else{ panel.setText("あなたの負けです。"); } } else if(e.getSource()==btn){ if(com==1){ panel.setText("あなたの負けです。"); } else if(com==2){ panel.setText("あいこです。"); } else{ panel.setText("あなたの勝ちです。"); } } else{ if(com==1){ panel.setText("あなたの勝ちです。"); } else if(com==2){ panel.setText("あなたの負けです。"); } else{ panel.setText("あいこです。"); } } } } 大変恐縮ですが、よろしくお願いします。

  • javaについて

    キーボードから入力をして、その後str[0][0]とstr[1][0]の文字を繋げたいのですがエラーとなってしまいます。どう変えたらよいでしょうか。 以下がプログラムです。 import java.io.*; import java.lang.*; import java.net.*; import java.awt.*; class gugu3 { public static void main(String[] args) throws IOException { int KEYWORDMAX=10; int CNTMAX=100; String [][]str = new String[KEYWORDMAX][CNTMAX]; BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String line=null; for (int i=0;i<KEYWORDMAX;i++){ System.out.println("第"+(i+1)+"番目のキーワードを設定しますか?(y/n)"); line=br.readLine(); if(line.equals("n")) break; for (int s=0;s<CNTMAX;s++){ System.out.println("キーワードを入力してください(終了=0)"); line=br.readLine(); if(line.equals("0"))break; str[s][i]=line; } } String keyword = new String(str[0][0]" "str[1][0]); System.out.println("キーワードは "+keyword); } } 以下はエラー表示です。 gugu3.java:24: ')' がありません。 String keyword = new String(str[0][0]" "str[1][0]); ^ gugu3.java:24: 文ではありません。 String keyword = new String(str[0][0]" "str[1][0]); ^ gugu3.java:24: ';' がありません。 String keyword = new String(str[0][0]" "str[1][0]); ^ エラー 3 個

    • ベストアンサー
    • Java
  • TextAreaでの文字の色

    こんばんわ。 皆様、ゴールデンウィークいかがお過ごしでしょうか? さて、TextAreaもしくはJTextAreaで、一行づつ、文字の色を変えるにはどうしたらいいのでしょうか? 以前も、同じ内容の質問があったようですが、(http://oshiete1.goo.ne.jp/kotaeru.php3?q=22309) 読んでみたのですがStylepadというDEMOがどこにあるかわからず、解決できないのでよろしくお願いします。 解決できそうなサンプルのURLなど分かりましたら、回答していただければとてもたすかります。 import java.applet.*; import java.awt.*; import java.swing.*; public class test extends JApplet { public void init() { Container con = getContentPane(); String str1 = "あいうえお\n"; String str2 = "かきくけこ\n"; JTextArea JT = new JTextArea(); con.add(JT); JT.append(str1); JT.append(str2); } } これの"あいうえお"と"かきくけこ"を異なる色にしたいのですが、どうしたらいいのでしょう?

    • ベストアンサー
    • Java
  • エラーで式の開始が不正ですと出ます。

    質問内容 課題 ・ファイル student.txt に学生データ(学籍番号、氏名、所属学部)が入っている。 ・半角文字で学籍番号を入れて、検索ボタンを押すと、氏名と学部が表示される。 ・存在しない学籍番号を入れて、検索ボタンを押すと、「該当なし」が表示される。 ・ファイル student.txt の内容。  学籍番号 氏名 学部の間は半角スペースで区切る。 0521201 金城花子 文学部 0533101 守山春子 生活環境学部 0561101 大森夏子 人間科学部 0552130 名城秋子 現代文化学部 0571201 鶴舞冬子 薬学部 プログラムソース↓ import java.awt.*; import java.awt.event.*; import javax.swing.*; import java.io.*; class kadai2Frame extends JFrame { private JTextField tf1,tf2,tf3; public kadai2Frame() { setSize(200,100); addWindowListener(new WindowAdapter() { // ×クリック時の終了処理 public void windowClosing(WindowEvent e) { System.exit(0); } }); Container c=getContentPane(); c.setLayout(new GridLayout(4,2)); // グリッドレイアウト4 行2 列を指定 c.add(new JLabel("学籍番号")); // 最初のラベルを作成して[名前]と表示 c.add(tf1=new JTextField("",8)); c.add(new JLabel("氏名")); // 最初のラベルを作成して[名前]と表示 c.add(tf2=new JTextField("",8)); c.add(new JLabel("学部")); // 次のラベルを作成して[年齢]と表示 c.add(tf3=new JTextField("",8)); JButton bt; c.add(bt=new JButton("検索")); // ボタンbt を作成して[検索]と表示 bt.addActionListener(new ActionListener() { // ボタンbt のリスナーを登録 public void actionPerformed(ActionEvent e) { // ボタンが押された時 string s6 = tf1.getText(); if(s1.equals(s6)){tf2.setText(str1Ary[1]); string s6 = tf1.getText(); if(s2.equals(s6)){tf2.setText(str2Ary[1]); string s6 = tf1.getText(); if(s3.equals(s6)){tf2.setText(str3Ary[1]); string s6 = tf1.getText(); if(s4.equals(s6)){tf2.setText(str4Ary[1]); string s6 = tf1.getText(); if(s5.equals(s6)){tf2.setText(str5Ary[1]); } public static void main(String[] args) { JFrame w=new kadai2Frame(); w.setVisible(true); try{ BufferedReader br = new BufferedReader(new FileReader("student.txt")); } catch (FileNotFoundException e) { String str1 = br.readLine(); String str2 = br.readLine(); String str3 = br.readLine(); String str4 = br.readLine(); String str5 = br.readLine(); String[] str1Ary = str1.split(" "); for (int i=0; i<str1Ary.length; i++) { System.out.println(str1Ary[i]); } String[] str2Ary = str2.split(" "); for (int i=0; i<str2Ary.length; i++) { System.out.println(str2Ary[i]); } String[] str3Ary = str3.split(" "); for (int i=0; i<str3Ary.length; i++) { System.out.println(str3Ary[i]); } String[] str4Ary = str4.split(" "); for (int i=0; i<str4Ary.length; i++) { System.out.println(str4Ary[i]); } String[] str5Ary = str5.split(" "); for (int i=0; i<str5Ary.length; i++) { System.out.println(str5Ary[i]); } String s1 = "str1Ary[0]"; String s6 = "tf1"; String s2 = "str2Ary[0]"; String s3 = "str3Ary[0]"; String s4 = "str4Ary[0]"; String s5 = "str5Ary[0]"; } } }); } } 以上です。誰か教えてください!!(ToT)

    • ベストアンサー
    • Java
  • java配列を用いたテキスト(画像)読み込みについ

    javaで配列を用いたテキスト(画像)読み込みについて。 教えて下さい。よろしくお願いします。 こんにちは。 現在、javaでプログラミング練習をしているものです。 複数のテキストファイルをランダムに表示させる、というプログラムで、 知恵袋であった、以下の質問を参考に作っています。 (これを応用して、画像のランダム表示を作りたいと考えています) http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1229836927... 自分なりに書き換えてみたりしましたが、上手く動きませんでした。 ((Unknown Source)・・・と表示されてしまいます;) 普通のテキストファイル読み込み、テキストフィールドに表示するプログラムを作りました。 これは正常に動きます。 もし以下のプログラムを活用してランダム表示ができる方法をご存知の方、 是非教えてください。 よろしくお願いします。 //テキスト読み込み try{ File file = new File("adv/testsc.txt"); if (checkBeforeReadfile(file)){ BufferedReader br = new BufferedReader(new FileReader(file)); String result = ""; String allString = ""; while((result = br.readLine()) != null){ allString += result + "\n"; } txtar1.setText(allString); String str; while((str = br.readLine()) != null){ txtar1.setText(str.toString()); } br.close(); }else{ txtar1.setText("ファイルが見つからないか開けません"); } }catch(FileNotFoundException a){ System.out.println(e); }catch(IOException a){ System.out.println(e); } どうぞよろしくお願いいたします。m(_ _)m

  • 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でアクセスしたいと思っています。 このソースをどう直せばいいんですか?

専門家に質問してみよう