2011-11-11 15 views
1

Bogusチャンクサイズエラーが発生する理由を教えてください。 swingToSvlt方法でjava.io.IOException:Bogusチャンクサイズ

例外:java.io.IOExceptionの:偽チャンクサイズ// - >にjava.io.IOException:sun.net.www.http.ChunkedInputStream.processRawで偽チャンクサイズ (不明なソース)>> sun.net.www.http.ChunkedInputStream.readAheadBlocking(不明なソース)>> at sun.net.www.http.ChunkedInputStream.readAhead(不明なソース)>> at sun.net.www.http.ChunkedInputStream。 read(Unknown Source)>> java.io.FilterInputStream.read(Unknown Source)>> at sun.net.www.protocol.http.HttpURLConnection $ HttpInputStream.read(未知のソース)>> java.io.ObjectInputStream $ PeekInputStream.read(不明なソース)>> java.io.ObjectInputStreamから$ PeekInputStream.readFully(不明なソース)>> java.io.ObjectInputStreamから$ BlockDataInputStream.readUTFBody(不明なソース)>> java.io.ObjectInputStream $ BlockDataInputStream。 r eInputStream.ReadString(不明なソース)>> java.io.ObjectInputStream.readObject0(不明なソース)>> java.io.ObjectInputStream.defaultReadFields(不明なソース)>> at java.io.ObjectInputStream.readSerialData(不明なソース)>> java.io.ObjectInputStream.readOrdinaryObject(不明なソース)>> java.io.ObjectInputStream.readObject0(不明なソース)>> java.io.ObjectInputStream.readObject( (不明なソース)>> at sun.reflect.DelegatingMethodAccessorImpl.invoke(不明なソース)>> at java。 lang.reflect.Method.invoke(不明なソース)>> java.io.ObjectStreamClass.invokeReadObject(不明なソース)>> java.io.ObjectInputStream.readSerialData(不明なソース)>> java.io.ObjectInputStream.readOrdinaryObject(不明なソース)>> java.io.ObjectInputStream.readObject0(不明なソース)>> java.io.ObjectInputStream.readObject(不明なソース)>> at java.util.Hash >>回答ひろばに行く本文はここまでですこのページの先頭へプライバシーポリシー - 利用規約 - ガイドライン - サイトマップ - ヘルプ・お問い合わせCopyright(C)2010 Yahoo Japan Corporation。All Rights Reserved。 )>> java.io.ObjectStreamClass.invokeReadObject(不明なソース)>> java.io.ObjectInputStream.readSerialData(不明なソース)>> java.io.ObjectInputStream.readOrdinaryObject(不明なソース)>> at java.io. java.io.ObjectInputStream.readObjectでObjectInputStream.readObject0(不明なソース)>>(不明なソース)コードChunkedInputStream#processRawから

答えて

2

、ライン306、我々は持っている:

/* 
* Extract the chunk size from the header (ignoring extensions). 
*/ 
String header = new String(rawData, rawPos, pos-rawPos+1, "US-ASCII"); 
for (i=0; i < header.length(); i++) { 
    if (Character.digit(header.charAt(i), 16) == -1) 
     break; 
} 
try { 
    chunkSize = Integer.parseInt(header.substring(0, i), 16); 
} catch (NumberFormatException e) { 
    error = true; 
    throw new IOException("Bogus chunk size"); 
} 

サーバーが間違ったヘッダーを送信しているように見えますが、送信されている内容が正確にわかり、そこで問題を見つけることができます。

+0

以下のバグのリンクを参照してください、チャンクサイズを含むようになっている行が(ループを非有効な16進としての最初の文字を参照している場合、それが可能である唯一の方法でありますあなたが投稿したもののすぐ上に)。 – Bringer128

+0

そうです、上記のループを追加しました。したがって、チャンクの先頭にチャンクサイズがないか、チャンクが空です。私にとってサーバ/ネットワークの問題のように聞こえる。 –

1

この問題に関するバグがあるようです。これは、入力ストリームで使用されるデータとエンコーディングのエンコーディングの不一致に関係していると考えられます。私が言うことができるものから

http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6502503

+0

そのバグは6u12で修正されました。 Matthew Farwellのコードでは、そのバグの評価で述べた正しいエンコーディングを使用していることがわかりました。 – Bringer128

関連する問題