サーバーがファイル転送または取得要求の再開をサポートしているかどうかを判断するにはどうすればよいですか?
私の考えは、0 ではなくバイト「2」で get リクエストを開始するようにヘッダーを設定し、適切な結果が得られた場合はすぐに http リクエストを閉じることでした。
しかし、この情報を私に明らかにする別の種類のプローブに対するサーバーの応答について何かがあるかどうか疑問に思っていました
サーバーがファイル転送または取得要求の再開をサポートしているかどうかを判断するにはどうすればよいですか?
私の考えは、0 ではなくバイト「2」で get リクエストを開始するようにヘッダーを設定し、適切な結果が得られた場合はすぐに http リクエストを閉じることでした。
しかし、この情報を私に明らかにする別の種類のプローブに対するサーバーの応答について何かがあるかどうか疑問に思っていました
サーバーのダウンロード再開機能を調べるには、サーバーに HEAD リクエストを送信して、Range ヘッダーに任意の値を指定します。応答コードが 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
再開をサポートしている場合にヘッダーで応答します。Postman、RequestMakerまたはInsomniaは、リクエスト/レスポンス ヘッダーの調査に役立ちます。