最大リダイレクトとは別に、URL の最大ダウンロード サイズを Httpclient に指定するにはどうすればよいですか?
質問する
1971 次
3 に答える
2
私の知る限り、サーバーに最大応答サイズを伝える HTTP ヘッダーはありません。応答の を確認して、Content-Length
大きすぎる場合はすぐに返すことができます。指定されていない場合 (サーバー側では不明であっても指定できます)、唯一のオプションはダウンロードを開始することです。心配しないでください: を呼び出しHttpClient.execute().getEntity()
ても、コンテンツはどこにも完全にダウンロードされません。はストリーミングおよびバッファリングできます。HttpEntity
つまり、呼び出してすぐに完全にメモリに保持されたり、ディスクに保存されたりするわけではありません。execute()
于 2012-04-11T12:47:00.133 に答える
1
ジャロッドの答えによると、これが私が問題を解決した方法です:
HttpGet request = new HttpGet();
request.setURI(new URI(url));
response = client.execute(request);
BufferedReader in;
in = new BufferedReader(new InputStreamReader(response.getEntity().getContent()));
StringBuffer sb = new StringBuffer("");
String line = "";
char buffer[] = new char[1024];
int totalReadSize = 0, currentRead=0;
while ((currentRead = in.read(buffer,0,buffer.length)) != -1)
{
totalReadSize += currentRead;
line = new String(buffer);
sb.append(line);
if (totalReadSize > MAX_DOWNLOAD_SIZE)
{
client.getConnectionManager().shutdown();
throw new Exception("File too large");
}
}
于 2012-04-12T08:54:19.047 に答える
1
戻らない場合Content-Length
は任意です。リソースをストリームとしてダウンロードし、手動でダウンロードしたバイト数を追跡する必要があります。これが HTTP の仕組みです。
于 2012-04-11T12:52:03.153 に答える