确定服务器是否支持resume get request

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了确定服务器是否支持resume get request相关的知识,希望对你有一定的参考价值。

如何确定服务器是否支持恢复文件传输或获取请求?

我的想法是设置标头以字节“2”而不是0开始获取请求,并立即关闭http请求,如果它给出了正确的结果

但是我想知道是否有一些关于服务器响应的内容可能会向我公开这种不同类型的探测器

答案

要探测服务器的下载恢复功能,您可以向服务器发送HEAD请求,并提供具有任意值的Range标头。如果响应代码为206,则支持resume。

卷曲示例:

$ 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标头进行响应,以防它们支持恢复。 RequestMakerInsomnia可以帮助您检查请求/响应标头。

以上是关于确定服务器是否支持resume get request的主要内容,如果未能解决你的问题,请参考以下文章

Html5 js上传插件resumable.js 的使用

AstraDB GET 请求失败

JAVA多线程suspend,resume和wait,notify的区别

XMLHttpRequest:确定链接是否不会返回4xx状态的最快方法?

Volley - POST/GET 参数

[Django学习]中间件