determine if server supports resume get request

前端 未结 3 1845
忘了有多久
忘了有多久 2021-01-30 17:54

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

相关标签:
3条回答
  • 2021-01-30 18:25

    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://...
    
    0 讨论(0)
  • 2021-01-30 18:32

    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.

    0 讨论(0)
  • 2021-01-30 18:37

    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.

    0 讨论(0)
提交回复
热议问题