java - 如何使用范围 header 组装文件?

标签 java http range

我使用 range hader,但没有创建正确的文件。

如果我发送 Range bytes=0-8999 文件重 9000 字节并且正确工作。 如果我发送 Range bytes=0-8999,9000-9999 文件重 10213 字节并且正确工作。

文件类型 mp3。

有什么问题吗?

HttpGet first = new HttpGet("http://cs4832.vkontakte.ru/u50184979/audio/ef64581d913c.mp3");
first.addHeader("Accept-Ranges", "bytes");
first.addHeader("Range", "bytes=0-8999,9000-9999");

//first.addHeader("Accept-Ranges", "bytes");

HttpResponse response = httpclient.execute(first, localContext);


InputStream instream = response.getEntity().getContent();
File f = new File("outFile1.mp3");

OutputStream out = new FileOutputStream(f);
byte buf[] = new byte[1024];
int len;
while ((len = instream.read(buf)) > 0) {
    out.write(buf, 0, len);
}
out.close();
instream.close();

最佳答案

参见 RFC 2616, Section 14.16 :

When an HTTP message includes the content of multiple ranges (for example, a response to a request for multiple non-overlapping ranges), these are transmitted as a multipart message. The multipart media type used for this purpose is "multipart/byteranges" as defined in Appendix 19.2. See Appendix 19.6.3 for a compatibility issue.

关于java - 如何使用范围 header 组装文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5981564/

相关文章:

http - 具有 HTTP2 前端和 HTTP1.1 后端的 HAProxy

arrays - VBA Excel - 从另一个工作簿中读取数据

javascript - 在 JS 中重置 HTML 范围输入不会移动显示的 slider

java - 使用java将driver.wait放置在selenium webdriver中的有效方法

java - 如何将数组返回给 Java 方法?

java - 尝试将 Firebase 添加到 Android Studio 项目,但它不会添加(应用程序 :processDebugGoogleServices Error)

http - Canvas、iframe 和 Access-Control-Allow-Origin

java - 使用 Picasso 加载图像

http - 当 Web 服务器返回 JPEG 图像(mime 类型图像/jpeg)时,它是如何编码的?

list - 长的 scala 范围