- PR -

Transfer-Encoding=[chunked]の時、Premature EOFでIOExceptionとなる

1
投稿者投稿内容
優子
常連さん
会議室デビュー日: 2004/03/26
投稿数: 39
投稿日時: 2006-07-03 12:24
HttpURLConnectionを用いてサイトと接続し、HttpURLConnection#getInputStream();で取得したストリームデータをwhileループで出力しています。この時、レスポンスヘッダがTransfer-Encoding=[chunked]の時に、InputStream#read();の箇所でIOExceptionが発生してしまいます。エラーメッセージには「java.io.IOException: Premature EOF」とあり、EOFが早すぎる?という意味だそうです。

調べると、HTTP1.1よりこのchunkモードでの通信が採用されていて、試しにHTTPのバージョンを1.0(chunkが存在していないバージョン)で同様の処理を行うと正常に処理できました。

バージョンをHTTP1.1にし、且つTransfer-Encoding=[chunked]の状態を変更することなく(1.0に変えたり、Transfer-Encodingを変更せずに)、クライアント側のロジックで、Premature EOFの問題を解決することはできますでしょうか?

ご意見の程よろしくお願いいたします。
以上です。

OS WINXP
Eclipse 3.1.1
Tomcat 5.5
加納正和
ぬし
会議室デビュー日: 2004/01/28
投稿数: 332
お住まい・勤務地: 首都圏
投稿日時: 2006-07-03 21:41
引用:

優子さんの書き込み (2006-07-03 12:24) より:
バージョンをHTTP1.1にし、且つTransfer-Encoding=[chunked]の状態を変更することなく(1.0に変えたり、Transfer-Encodingを変更せずに)、クライアント側のロジックで、Premature EOFの問題を解決することはできますでしょうか?



それはできると思いますが、、そもそもTransfer-Encoding=chunkedってのを
分かってるのでしょうか。

chunkedは以下に簡単にあります。

http://www.tohoho-web.com/ex/http.htm

HTTPボディがchunkedなので、HTTP/1.0のつもりでいると、
データが解釈できないのでしょう。

1

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