使用Alamofire 4.9.0。
我正在尝试实现以JSON行格式处理流式API。方法如下:
stream = Alamofire.request(url, method: HTTPMethod.get,
headers: TTSessionManager.headers)
.validate()
.stream(closure: { (data) in
// parsing JSON lines ...
})
.response(completionHandler: { (response) in
// error handling ...
})
现在的问题是,第一个响应需要一些时间才能返回。当它完成时,我会在一个大批量中获得几行JSON。之后,流继续正常响应,每个通过流的响应都有一个新的JSON行。
有人遇到过这种行为吗?我想知道是否需要一些额外的会话或请求设置,以便从一开始就正常工作(每个响应一行(。在取消请求后检查response.metrics
时,很多字段都是空的,所以我不能确定一些初始连接步骤是否是问题所在:
(Domain Lookup Start) (null)
(Domain Lookup End) (null)
(Connect Start) (null)
(Secure Connection Start) (null)
(Secure Connection End) (null)
(Connect End) (null)
所以这里的问题是响应标头没有将Content-Type
设置为application/json
。当此标头设置不正确时,URLSession数据任务将缓冲响应的前512个字节。
更多信息可以在这里找到:https://developer.apple.com/forums/thread/64875