如何确定服务器是否支持恢复文件传输或获取请求?确定服务器是否支持恢复请求
我的想法是,以设置头开始以字节“2”的GET请求,而不是0,并立即关闭HTTP请求,如果给了正确的结果
,但我不知道是否有某种东西服务器对不同类型的探测器的响应,可能会向我显示此信息
如何确定服务器是否支持恢复文件传输或获取请求?确定服务器是否支持恢复请求
我的想法是,以设置头开始以字节“2”的GET请求,而不是0,并立即关闭HTTP请求,如果给了正确的结果
,但我不知道是否有某种东西服务器对不同类型的探测器的响应,可能会向我显示此信息
要探测服务器的下载恢复功能,可以向提供任意值的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可以帮助您检查请求/响应标头。
我该如何用java apache库来做到这一点? '新的BasicHeader(“范围”,“字节= 50-100”)?任何东西额外 – CQM
不知道有关Apache库,但与标准的lib类的URL,你可以使用connection.setRequestProperty(“范围”,“字节=”+ startvalue +“ - ”+ endvalue) –