- PR -

DataInputStreamのインスタンス時にIOExceptionがでます。

1
投稿者投稿内容
未記入
会議室デビュー日: 2005/02/04
投稿数: 3
投稿日時: 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);
}
}











未記入
ぬし
会議室デビュー日: 2004/09/17
投稿数: 667
投稿日時: 2005-02-04 16:09
とりあえず、素人は 1行 1命令。
コード:
DataInputStream dis = new DataInputStream(uc.getInputStream());


この部分を次のように書き換える。
コード:
InputStream in = uc.getInputStream();
DataInputStream dis = new DataInputStream(in);


おそらく、DataInputStream は無罪。
それと、スタックトレース付けれ。
未記入
会議室デビュー日: 2005/02/04
投稿数: 3
投稿日時: 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 ]
Gio
ぬし
会議室デビュー日: 2003/11/28
投稿数: 350
お住まい・勤務地: 都内から横浜の間に少量発生中
投稿日時: 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
投稿数: 3
投稿日時: 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

スキルアップ/キャリアアップ(JOB@IT)