1

Web サーバーからファイルをダウンロードするコードを C# で書いています。

「バイト範囲」リクエストをサポートするいくつかのリンクでテストしているため、サポートされていないサーバーで何が起こるかわかりません.

HttpWebRequest request = (HttpWebRequest)WebRequest.Create("someUrl");
request.AddRange(someValue);

ご覧のとおり、特別なことは何もありません。サーバーからの応答を取得した後、ファイルのダウンロードを開始します。バイト範囲をサポートしていないサーバーがステータス コード 206 ではなく 200 を返すことはわかっています。したがって、その場合、バイト範囲リクエストなしで再試行する必要があるかどうかに興味があります。

Googleドライブのリンクなど、場合によっては、応答を閉じて別の応答を得るのに時間がかかりすぎるため、そうする必要がないことを願っています. サーバーがバイト範囲をサポートしていない場合は、最初からダウンロードしてもかまいません。これはコーディングなしで自動的に行われますか?

4

1 に答える 1

1

その場合、再度バイト範囲リクエストなしで再試行する必要があるかどうかが気になります

いいえ、サーバーがバイト範囲をサポートしていない場合は、ストリーム全体をクライアントに送り返すだけです。RangeHTTP 要求ヘッダーが存在しないかのようです。したがって、基本的に、クライアントで応答ストリームを読み取ると、ファイル全体が取得されます。

そのため、バイト範囲を含むリクエストに対して 200 ステータス コード (206 部分コンテンツとは対照的に) を検出した場合、サーバーは既にファイル全体を送信しているため、追加の範囲リクエストをわざわざ送信する必要はありません。

ところで、サーバーが範囲指定ダウンロードをサポートしているかどうかを検出するには、最初のHEADリクエストを送信して機能を確認することを検討してください。

于 2016-01-05T14:22:18.290 に答える