3

HttpClient 4.0 を使用すると、から得られる応答ResponseHandlerが実際のページ コンテンツの約半分にすぎないという問題があります (文字列で最大 61k バイトに対して、ブラウザに返されるページで最大 125k バイト)。これを制限する何らかの制限がある可能性のある場所を見つけることができないようです。何か案は?

更新: 私が見つけたもう 1 つのことは、エンティティのgetContentLengthメソッドによって返されるサイズが -1 であるのに対して、以前の要求の通常の値であることです。javadoc は、長さが不明であることを示しているようです-なぜそうなるのですか?

Update2: 80KB を超えるページの応答を見つけようとしました。興味深いことに、応答文字列の最大長は常に 18210 文字です。何か案は??

4

3 に答える 3

2

これはそうではないかもしれませんが、ストリームをどこかにフラッシュしていない場合に発生することがあります。

于 2010-03-21T00:42:46.933 に答える
1

client.getConnectionManager().shutdown()これは、応答を読む前に電話したことが原因であることがわかりました。リクエストを実行するときにブロックの 1 つに間抜けがfinally {}あり、シャットダウンによって競合状態が発生し、読み取りの途中で応答が強制終了されることがありました。

getContentLength()Transfer-Encoding: チャンク ヘッダーが原因で、私にも -1 が返されました。私は HttpClient ライブラリがチャンクされた応答を正しく処理していないと思っていましたが、実際には私の失敗でした。

于 2012-03-19T06:10:49.343 に答える
0

もう 1 つの場所は、サーバー側です。

1 つの可能性は、webapp コードが応答の書き込みの途中で時折ぐらつくことです。もう 1 つは、サーバー コンテナー コードにバグがあることです。たとえば、Tomcat の一部の古いバージョンにバグがあり、大きな応答が壊れたり切り捨てられたりしたことをぼんやりと思い出しました。

于 2010-03-21T08:06:33.730 に答える