【发布时间】:2017-08-27 22:13:54
【问题描述】:
我正在尝试发送具有多个范围的范围请求,如下所述:HTTP/1.1 response to multiple range。问题是我无法正确解析响应。如何使用 OkHttp 解析?
【问题讨论】:
标签: java android okhttp okhttp3
我正在尝试发送具有多个范围的范围请求,如下所述:HTTP/1.1 response to multiple range。问题是我无法正确解析响应。如何使用 OkHttp 解析?
【问题讨论】:
标签: java android okhttp okhttp3
我可以按照这个答案Receiving Multipart Response on client side (ClosableHttpResponse) 中的描述来做到这一点。 我导入了以下库:
编译'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()));
}
}
我仍然不满意,不得不导入整个邮件处理库,只是为了管理多部分响应。但目前,问题已得到解决,直到我找到或提出更好的解决方案。
【讨论】: