LoginSignup
6
3

More than 5 years have passed since last update.

HttpURLConnectionを使用するときにはまったこと

Posted at

java.io.IOException: stream closed が発生

AndroidでHTTPを使ったPOST

通常のJAVAでもおそらく同じ症状が出るのではないかと思われる。

通常HttpURLConnectionを使用したPOSTを行う際に以下のような注意点が良く見られました。
(参考サイトは忘れました。すみません。)

・OutputStreamにデータを書き込む前にsetDoOutput(true)を設定する。
・読込を開始する前にOutputStreamをクローズ乃至フラッシュする。
・書き込み後にInputStreamを読みこまないと正常に通信が終了しない。

私が以上の点を踏まえてコードを書いてみたときに
java:error
java.io.IOException: stream closed

が発生。

しばらく見直して、以下の点が原因だとわかった。

  • OutputStreamへの書き込みが終了する前に、HttpURLConnection.getInputStream()を呼び出していた。

HttpURLConnectionで使用しているコネクションは1本なので、Streamは1つだけということらしい。
HttpURLConnection.getInputStream()を呼び出した時点で、OutputStreamがクローズされてInputStreamに切り替わっていたので、書き込み処理でエラーが発生していた模様。
ちゃんとした検証はしていないが。

考えてみれば単純で、もったいないことをしてしまった。

6
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
3