【问题标题】:How to parse multi-range request response如何解析多范围请求响应
【发布时间】:2017-08-27 22:13:54
【问题描述】:

我正在尝试发送具有多个范围的范围请求,如下所述:HTTP/1.1 response to multiple range。问题是我无法正确解析响应。如何使用 OkHttp 解析?

【问题讨论】:

    标签: java android okhttp okhttp3


    【解决方案1】:

    我可以按照这个答案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()));
        }
    }
    

    我仍然不满意,不得不导入整个邮件处理库,只是为了管理多部分响应。但目前,问题已得到解决,直到我找到或提出更好的解决方案。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-08
      • 2019-12-12
      • 1970-01-01
      • 1970-01-01
      • 2016-12-12
      • 2017-08-16
      • 2019-09-04
      • 1970-01-01
      相关资源
      最近更新 更多