27

サーバーがファイル転送または取得要求の再開をサポートしているかどうかを判断するにはどうすればよいですか?

私の考えは、0 ではなくバイト「2」で get リクエストを開始するようにヘッダーを設定し、適切な結果が得られた場合はすぐに http リクエストを閉じることでした。

しかし、この情報を私に明らかにする別の種類のプローブに対するサーバーの応答について何かがあるかどうか疑問に思っていました

4

3 に答える 3

44

サーバーのダウンロード再開機能を調べるには、サーバーに 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 はテストしていません。

于 2013-08-12T06:01:50.883 に答える
5

@aadelの答えに追加:

最近のほとんどのサーバーは、Accept-Ranges: bytes再開をサポートしている場合にヘッダーで応答します。PostmanRequestMakerまたはInsomniaは、リクエスト/レスポンス ヘッダーの調査に役立ちます。

于 2016-11-14T17:25:20.667 に答える