gpt4 book ai didi

java - 使用 HTTP 请求下载文件的一部分

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:25:34 33 4
gpt4 key购买 nike

我正在尝试下载 PDF 文件的一部分(仅用于测试“Range”标题)。我向服务器请求了 Range 中的字节 (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<br/>
Content-Length: 94973848<br/>
Downloaded Size: 94973848

提前致谢。

最佳答案

尝试更改以下内容:

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

与:

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

根据规范 14.35.1 Byte Ranges

同样,根据规范 14.5 Accept-Ranges ,您还可以使用以下方法检查您的服务器是否真的支持部分内容检索:

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

关于java - 使用 HTTP 请求下载文件的一部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17643851/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com