How does one determine if a server supports resuming a file transfer or get request?
My thoughts were to set the header to start the get request at byte \"2\" instead of
You can test it out, starting, stopping, then restarting a download:
curl --continue-at - http://... >> file.out
For whatever reason, this (from another answer) gave me a 403:
curl -i -X HEAD --header "Range: bytes=50-100" http://...
Adding to @aadel's answer:
Most of the servers nowadays respond with Accept-Ranges: bytes
header in case they support resuming. Postman, RequestMaker or Insomnia can help you in examining request/response headers.
To probe the download resume feature of a server, you may send a HEAD request to the server supplying a Range header with arbitrary values. If the response code is 206, then resume is supported.
Example with curl:
$ curl -i -X HEAD --header "Range: bytes=50-100" http://mirrors.melbourne.co.uk/ubuntu-releases//raring/ubuntu-13.04-desktop-amd64.iso
Update:
Here's an example in 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
}
}
However, I haven't tested it mysqlf.