首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >阿拉莫火力支持分块数据响应吗?

阿拉莫火力支持分块数据响应吗?
EN

Stack Overflow用户
提问于 2015-06-12 11:29:07
回答 3查看 4.1K关注 0票数 2

目前还不清楚Alamofire是否支持大型数据集或渐进数据集的分组数据。对于我的应用程序来说,这是一个非常需要的特性,否则我可能不得不考虑其他方法。

阿拉莫火吉突页面上,它声明了Progress Closure & NSProgress,但我不知道这意味着什么。

并根据维基百科对分块数据传输的描述。

Senders can begin transmitting dynamically-generated content before knowing the total size of that content.

,为了清楚起见,让我解释一下为什么我需要这个。

基本上,我有一个非常大的JSON文件,它被部分缓存。完整的JSON文件由较小的JSON对象组成。我使用iojs / nodejs通过res.write()Express发送分块数据,后者知道不发送Content-Length报头,并将其作为块数据发送。我已经通过html/js验证了这一工作。

让我知道如果你想让我提供代码来演示这个!

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-06-22 16:14:12

Alamofire肯定支持Transfer-Encoding: chunked数据,因为它已经被NSURLSession所支持。下面是一个从httpwatch.com下载块图像的快速示例。

代码语言:javascript
复制
let request = Alamofire.request(.GET, "http://www.httpwatch.com/httpgallery/chunked/chunkedimage.aspx")
request.progress { bytesReceived, totalBytesReceived, totalBytesExpected in
    println("\(bytesReceived) - \(totalBytesReceived) - \(totalBytesExpected)")
}
request.response { request, response, _, error in
    println(request)
    println(response)
    println(error)
}

debugPrintln(request)

由于图像的内容长度不可用,因此totalBytesExpected将始终报告为-1,因为它是未知的。不过,bytesReceivedtotalBytesReceived的报告是正确的。在我看来,块下载可能不是向用户展示下载进度的最佳选择,因为下载的长度还没有确定。

另一个可能有用的特性是请求上的新stream功能。它允许您在下载每个数据块时存储它。

如果这些选项不适合您的所有需求,请将您正在遇到的问题提交到我们的Github项目上,以便我们可以进一步调查。

票数 1
EN

Stack Overflow用户

发布于 2017-01-27 21:41:10

在Alamofire中处理分块响应的正确方法是使用stream

代码语言:javascript
复制
    let req = Alamofire.request("http://localhost:8080")

    req.stream { (data) in
       print(String(data: data, encoding: String.Encoding.utf8) ?? "No data")
    }
票数 7
EN

Stack Overflow用户

发布于 2015-06-12 12:41:30

以下可能会有帮助-

https://github.com/Alamofire/Alamofire#downloading-a-file-wprogress

下载文件W/进度

代码语言:javascript
复制
Alamofire.download(.GET, "http://httpbin.org/stream/100", destination: destination)
         .progress { (bytesRead, totalBytesRead, totalBytesExpectedToRead) in
             println(totalBytesRead)
         }
         .response { (request, response, _, error) in
             println(response)
         }
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30801968

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档