确定服务器是否支持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
标头进行响应,以防它们支持恢复。 RequestMaker或Insomnia可以帮助您检查请求/响应标头。
以上是关于确定服务器是否支持resume get request的主要内容,如果未能解决你的问题,请参考以下文章
JAVA多线程suspend,resume和wait,notify的区别