人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

なんかjavaのcldcで
HttpConnection.getLength()
でlengthが-1の場合と普通に取れる場合があります。なぜでしょうか?仕組みが知りたいです。
-1でも値は飛んできているみたいで、
InputStream in;
int t;
byte[] buf = new byte[256];
while ((t = InputStream.read(buf)) != -1){
}
みたいにやれば取れます。

●質問者: kunitz
●カテゴリ:コンピュータ
✍キーワード:byte Java 普通に
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● mmz
●25ポイント

http://www.ep.u-tokai.ac.jp/~nakazato/API/504i/base/jguide504_ap...

: インタフェース HttpConnection

()

上記はjavaのAPIドキュメントです。

HTTPプロトコルのヘッダ情報に、コンテンツの長さを設定するヘッダ”Content-Length”があります。

HttpConnection#getLength()メソッドはこれを参照しているだけで、実際のコンテンツの長さを測っているわけではありません。

”Content-Length”が含まれていない場合は当該メソッドは -1 を返すことになっていますので、この場合は実際の内容が存在しても -1 が返ります。

◎質問者からの返答

ありがとうございます!


2 ● aki73ix
●25ポイント

http://www.mylab.jp/diary/20040216.html

PC関係のメモ(2004-02-16)

私も、JavaじゃなくてCで同じ経験があります、何故かサーバが”Content-Length”を返してくれないときがあるのです

そこで、-1が帰ったときはとらないことにしていたのですが、後に、パケットが分断されて、先にContent-Lengthを含まないデータをヘッダ部分を受信したときに-1が返ると分かって、0以上が返るまで待つようにしたことがあります

ちょっと検索してみると、サーバがわに問題があることもあるようですね(URL参照)

◎質問者からの返答

ありがとうございます!

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ