- - PR -
DataInputStreamのインスタンス時にIOExceptionがでます。
1
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2005-02-04 15:52
はじめまして。
質問させていただきます。 下記のようなjavaのソースを実行したとき、 java.io.IOException at com/ms/net/wininet/WininetURLConnection.getInputStream のように出力されます。 出力状況を見てみると、 ★B★が出力された後にエラーが出るため、 DataInputStream dis = new DataInputStream(uc.getInputStream()); の部分が問題であると考えられます。 知識が乏しい状況でこのエラーの解決を 依頼されており、非常に困っております。 どんなちいさなことでもかまいませんので 思い当たる方がいらっしゃいましたら 是非教えてください。 また、情報不足でしたら、 おっしゃってくだされば追加で記述いたします。 宜しくお願い致します。 public String XXXXXXXX(int XXXXXX) { String strRc; // // 省略 // try { // // 省略 // URLConnection uc = url.openConnection(); //DEBUG System.out.println("★@★"); uc.setDoOutput(true); // DEBUG System.out.println("★A★"); //POST送信(テキスト) PrintStream ps = new PrintStream(uc.getOutputStream()); // // 省略 // ps.close(); uc.connect(); System.out.println("★B★"); // ★★★★★問題の場所★★★★★★ DataInputStream dis = new DataInputStream(uc.getInputStream()); System.out.println("★C★"); strRc = dis.readUTF(); System.out.println("★D★"); dis.close(); System.out.println("★E★"); return(strRc); } catch (Exception e) { return(strRc); } } | ||||||||
|
投稿日時: 2005-02-04 16:09
とりあえず、素人は 1行 1命令。
この部分を次のように書き換える。
おそらく、DataInputStream は無罪。 それと、スタックトレース付けれ。 | ||||||||
|
投稿日時: 2005-02-04 17:16
返答ありがとうございました。
試してみたんですが、やはりIOExceptionはでました。 スタックトレースを取りましたので追記いたします。 宜しくお願い致します。 java.io.IOException at com/ms/net/wininet/WininetURLConnection.getInputStream (WininetURLConnection.java) at 省略/MOClientMi02_1.submit (MOClientMi02_1.java:485) at 省略/MOClientMi02_1.init (MOClientMi02_1.java:126) at com/ibm/eNetwork/HOD/AppletManager.startApplet (com/ibm/eNetwork/HOD/AppletManager) at com/ibm/eNetwork/HOD/AppletManager.startApplet (com/ibm/eNetwork/HOD/AppletManager) at com/ibm/eNetwork/HOD/AppletManager.actionPerformed (com/ibm/eNetwork/HOD/AppletManager) at com/ibm/hi/customizer/beans/common/FunctionMgrSC.runApplet (FunctionMgrSC.java:676) at com/ibm/hi/customizer/beans/common/FunctionMgrSC.customMacroEvent (FunctionMgrSC.java:594) at com/ibm/hi/customizer/beans/CustomTerminal.processCustomEvent (CustomTerminal.java:4621) at com/ibm/hi/customizer/beans/CustomTerminal.refireCustomEvent (CustomTerminal.java:4591) at com/ibm/hi/customizer/beans/CPanel.attExecuteCommands (CPanel.java:3831) at com/ibm/hi/customizer/beans/CPanel.attExecuteMacro (CPanel.java:3741) at com/ibm/hi/customizer/beans/CPanel.attMacroEventHandler (CPanel.java:7609) at com/ibm/hi/customizer/beans/CPanel.processCEvent (CPanel.java:6993) at com/ibm/hi/customizer/beans/common/CButton.fireEvent (CButton.java:244) at com/ibm/hi/customizer/beans/common/CButton.doClick (CButton.java:857) at com/ibm/hi/customizer/beans/common/CButton.mouseReleased (CButton.java:331) at java/awt/AWTEventMulticaster.mouseReleased (AWTEventMulticaster.java) at java/awt/Component.processMouseEvent (Component.java) at java/awt/Component.processEvent (Component.java) at java/awt/Container.processEvent (Container.java) at java/awt/Component.dispatchEventImpl (Component.java) at java/awt/Container.dispatchEventImpl (Container.java) at java/awt/Component.dispatchEvent (Component.java) at java/awt/LightweightDispatcher.retargetMouseEvent (Container.java) at java/awt/LightweightDispatcher.processMouseEvent (Container.java) at java/awt/LightweightDispatcher.dispatchEvent (Container.java) at java/awt/Container.dispatchEventImpl (Container.java) at java/awt/Component.dispatchEvent (Component.java) at java/awt/EventDispatchThread.run (EventDispatchThread.java) 追加 : GIOさん指摘ありがとうございました。 [ メッセージ編集済み 編集者: 未記入 編集日時 2005-02-04 18:14 ] [ メッセージ編集済み 編集者: 未記入 編集日時 2005-02-04 18:56 ] | ||||||||
|
投稿日時: 2005-02-04 18:04
スタックトレースを見ると MOClientMi02_1 というアプレットクラスが初期化処理の中で通信チャネルを開こうとして失敗しているように見えます。
一般のアプレットは、通信できる相手がアプレットプロバイダホストに限られます。 これを考えるとなぜ uc.getOutputStream() が通っているのが謎ですが、これ以上は宣言が省略されている変数 url の内容によるので、詳しいことはわかりません。 ちなみに、uc.getDoInput() を表示させて true になっているか確認してみてください。 (JDK 1.4.2 の URLConnection ではこの値が true ですが、com.ms.net.wininet.WininetURLConnection という独自の環境になっているので、調べてみた方が良いかもしれません。) [ メッセージ編集済み 編集者: Gio 編集日時 2005-02-04 18:29 ] | ||||||||
|
投稿日時: 2005-02-04 18:55
返信ありがとうございました。
System.out.println(uc.getDoInput()); を出力してみましたが、結果はtrueでした。 ↓省略部分のurl変数です。 URL url = null; url = new URL(strChkUrl); URLConnection uc = url.openConnection(); uc.setDoOutput(true); uc.setDoInput(true); url変数には以下の値が入っていました。 http://マシン名/servlet/jp.省略.mo.MOServletMi02 確かにuc.getOutputStream() が通っている理由がわからないのです。 環境的に他に調べて見なくてはいけない部分等はありますでしょうか? [ メッセージ編集済み 編集者: 未記入 編集日時 2005-02-04 18:56 ] |
1