如何解析多范围请求响应
How to parse multi-range request response
我正在尝试发送具有多个范围的范围请求,如此处所述:。问题是我无法正确解析响应。我如何使用 OkHttp 解析它?
我能够按照此答案 中的描述完成此操作。
我导入了以下库:
compile 'com.sun.mail:android-mail:1.5.5'
所以我的代码现在如下所示:
Request request = new Request.Builder()
.url(url)
.addHeader("range", String.format("bytes=%s", TextUtils.join(", ", ranges)))
.build();
Response response = client.newCall(request).execute();
ByteArrayDataSource dataSource = new ByteArrayDataSource(response.body().byteStream(), response.body().contentType().toString());
MimeMultipart multipart = new MimeMultipart(dataSource);
int count = multipart.getCount();
for (int i = 0; i < count; i++) {
BodyPart bodyPart = multipart.getBodyPart(i);
if (bodyPart.isMimeType("application/octet-stream")) {
processBinaryStream(bodyPart.getInputStream());
} else {
// Or process different types of data
throw new Exception(String.format("Content type: %s cannot be parsed", bodyPart.getContentType()));
}
}
我仍然不满意,不得不导入整个邮件处理库,只是为了管理多部分响应。但目前,问题已经解决,直到我找到或想出更好的解决方案。
我正在尝试发送具有多个范围的范围请求,如此处所述:。问题是我无法正确解析响应。我如何使用 OkHttp 解析它?
我能够按照此答案
compile 'com.sun.mail:android-mail:1.5.5'
所以我的代码现在如下所示:
Request request = new Request.Builder()
.url(url)
.addHeader("range", String.format("bytes=%s", TextUtils.join(", ", ranges)))
.build();
Response response = client.newCall(request).execute();
ByteArrayDataSource dataSource = new ByteArrayDataSource(response.body().byteStream(), response.body().contentType().toString());
MimeMultipart multipart = new MimeMultipart(dataSource);
int count = multipart.getCount();
for (int i = 0; i < count; i++) {
BodyPart bodyPart = multipart.getBodyPart(i);
if (bodyPart.isMimeType("application/octet-stream")) {
processBinaryStream(bodyPart.getInputStream());
} else {
// Or process different types of data
throw new Exception(String.format("Content type: %s cannot be parsed", bodyPart.getContentType()));
}
}
我仍然不满意,不得不导入整个邮件处理库,只是为了管理多部分响应。但目前,问题已经解决,直到我找到或想出更好的解决方案。