サーバがファイル転送の再開またはリクエストの取得をサポートするかどうかをどのように判断しますか?サーバがサポートリクエストを再開できるかどうかを確認
私の考えはそれが適切な結果
を与えた場合は、HTTPリクエストを閉じてすぐに「2」バイトでGETリクエストを開始するようにヘッダーを設定の代わりに、0、としていたが、約何かがあった場合、私は思っていましたこの情報を私に明らかにする別の種類のプローブに対するサーバーの応答
サーバがファイル転送の再開またはリクエストの取得をサポートするかどうかをどのように判断しますか?サーバがサポートリクエストを再開できるかどうかを確認
私の考えはそれが適切な結果
を与えた場合は、HTTPリクエストを閉じてすぐに「2」バイトでGETリクエストを開始するようにヘッダーを設定の代わりに、0、としていたが、約何かがあった場合、私は思っていましたこの情報を私に明らかにする別の種類のプローブに対するサーバーの応答
サーバーのダウンロード再開機能を調べるには、任意の値を持つRangeヘッダーを提供するHEAD要求をサーバーに送信できます。応答コードが206の場合は、再開がサポートされます。カールと
例:
$ curl -i -X HEAD --header "Range: bytes=50-100" http://mirrors.melbourne.co.uk/ubuntu-releases//raring/ubuntu-13.04-desktop-amd64.iso
更新:
は、ここでのJavaの例です:
import org.apache.http.client.ResponseHandler;
import org.apache.http.client.HttpClient;
import org.apache.http.HttpResponse;
import org.apache.http.client.methods.HttpHead;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.message.BasicHeader;
public class ResumeChecker {
public final static void main(String[] args) throws Exception {
HttpClient httpclient = new DefaultHttpClient();
HttpHead httpRequest = new HttpHead("http://www.google.com");
httpRequest.addHeader(new BasicHeader("Range", "bytes=10-20"));
System.out.println("Executing request " + httpRequest.getURI());
HttpResponse response = httpclient.execute(httpRequest);
// Check here that response.getStatusLine() contains 206 code
}
}
しかし、私はmysqlfそれをテストしていません。
@のaadelの答えに追加:
サーバのほとんどは、今日、彼らは再開サポートする場合にはAccept-Ranges: bytes
ヘッダーで応答。 RequestMakerまたはInsomniaは、リクエスト/レスポンスヘッダーの調査に役立ちます。
Accept-Range:bytesで応答するサーバでも、遠隔ダウンロードはサポートしていません(少なくとも、一部のファイルではなく、すべてではないかもしれません)。 Rangeでリクエストを送信すると、要求した部分だけを持つ206ではなく、ファイル全体と200が得られます。ひどく書かれたHTTP/HTTPSプロキシによるものかもしれません。物語の道徳:ヘッダーを信頼しないでください。とにかくHEADリクエストを作成します。または、GETの応答コードを再確認してください。 – Corrodias
私の最後のコメントへの修正:必ずしもひどく書かれているわけではありません。 If-Rangeヘッダーが、サーバーのファイルとは異なるバージョンのファイルを要求していることを示す場合は、200が有効な応答です。それでも、200はRange要求に対する有効な応答であるということです。 – Corrodias
どのように私はjava apacheライブラリでこれを行うでしょうか? '新しいBasicHeader(" Range "、" bytes = 50-100 ")?任意のもの – CQM
apacheライブラリについてはわかりませんが、標準のlibクラスのURLでは、connection.setRequestProperty( "Range"、 "bytes =" + startvalue + " - " endValue)を使用することができます。 –