なんかjavaのcldcで

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

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:2004/05/26 20:34:04
  • 終了:--

回答(2件)

id:mmz No.1

mmz回答回数14ベストアンサー獲得回数02004/05/26 21:51:06

ポイント25pt

()

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

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

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

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

id:kunitz

ありがとうございます!

2004/05/26 22:13:28
id:aki73ix No.2

aki73ix回答回数5224ベストアンサー獲得回数272004/05/30 02:20:29

ポイント25pt

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

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

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

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

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

id:kunitz

ありがとうございます!

2004/05/31 02:37:47

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません