determine if server supports resume get request

前端 未结 3 1847
忘了有多久
忘了有多久 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: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.

提交回复
热议问题