下载使用HTTP请求的文件的一部分下载使用HTTP请求的文件的一部分(Downloading a p

2019-05-12 05:47发布

我想下载一个PDF文件的一部分(只是为了测试“范围”标头)。 我要求服务器为范围的字节数(0-24),但仍,而不是让第一个25个字节(部分)出内容的,我得到了全长的内容。 此外,而不是获取响应代码206(部分内容),我发现了响应码200。

这里是我的代码:

public static void main(String a[]) {
    try {
        URL url = new URL("http://download.oracle.com/otn-pub/java/jdk/7u21-b11/jdk-7u21-windows-x64.exe?AuthParam=1372502269_599691fc0025a1f2da7723b644f44ece");
        HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
        urlConnection.setRequestProperty("Range", "Bytes=0-24");
        urlConnection.connect();

        System.out.println("Respnse Code: " + urlConnection.getResponseCode());
        System.out.println("Content-Length: " + urlConnection.getContentLengthLong());

        InputStream inputStream = urlConnection.getInputStream();
        long size = 0;

        while(inputStream.read() != -1 )
            size++;

        System.out.println("Downloaded Size: " + size);

    }catch(MalformedURLException mue) {
        mue.printStackTrace();
    }catch(IOException ioe) {
        ioe.printStackTrace();
    }
}

下面是输出:
Respnse Code: 200
Content-Length: 94973848
Downloaded Size: 94973848

提前致谢。

Answer 1:

尝试改变如下:

urlConnection.setRequestProperty("Range", "Bytes=0-24");

有:

urlConnection.setRequestProperty("Range", "bytes=0-24");

按照规范14.35.1字节范围

同样,按照该规范14.5接受-范围 ,你也可以查看服务器是否确实支持部分内容检索或不使用下列内容:

boolean support = urlConnection.getHeaderField("Accept-Ranges").equals("bytes");
System.out.println("Partial content retrieval support = " + (support ? "Yes" : "No));


Answer 2:

如果服务器支持它(HTTP 1.1服务器应),只有这样,你可以使用范围请求......如果你想要做的是检查,然后就发送HEAD请求而不是一个GET请求。 相同的头文件,同样的一切,只是“HEAD”,而不是“GET”。 如果您收到一个206响应,你就会知道范围是支持的,否则你会得到一个200响应。



Answer 3:

你必须连接调用setRequestProperty 之前网址

更改:

urlConnection.setRequestProperty("Range", "Bytes=0-24");
urlConnection.connect();

至:

urlConnection.connect();
urlConnection.setRequestProperty("Range", "Bytes=0-24");


Answer 4:

我认为正确的标题是“内容范围”,而不是“范围”为你使用。



文章来源: Downloading a portion of a File using HTTP Requests