java.io.IOException: stream closed が発生
AndroidでHTTPを使ったPOST
通常のJAVAでもおそらく同じ症状が出るのではないかと思われる。
通常HttpURLConnectionを使用したPOSTを行う際に以下のような注意点が良く見られました。
(参考サイトは忘れました。すみません。)
・OutputStreamにデータを書き込む前にsetDoOutput(true)を設定する。
・読込を開始する前にOutputStreamをクローズ乃至フラッシュする。
・書き込み後にInputStreamを読みこまないと正常に通信が終了しない。
私が以上の点を踏まえてコードを書いてみたときに
error
java.io.IOException: stream closed
が発生。
しばらく見直して、以下の点が原因だとわかった。
- OutputStreamへの書き込みが終了する前に、HttpURLConnection.getInputStream()を呼び出していた。
HttpURLConnectionで使用しているコネクションは1本なので、Streamは1つだけということらしい。
HttpURLConnection.getInputStream()を呼び出した時点で、OutputStreamがクローズされてInputStreamに切り替わっていたので、書き込み処理でエラーが発生していた模様。
ちゃんとした検証はしていないが。
考えてみれば単純で、もったいないことをしてしまった。