iOS Alamofire - Streaming JSON 行第一响应问题
iOS Alamofire - Streaming JSON lines first response issue
使用 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 ...
})
现在的问题是第一个响应需要一些时间才能 return。当它出现时,我会在一个大批量中得到几行 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)
所以这里的问题是响应 header 没有将 Content-Type
设置为 application/json
。当这个 header 设置不正确时,URLSession 数据任务将缓冲响应的前 512 个字节。
使用 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 ...
})
现在的问题是第一个响应需要一些时间才能 return。当它出现时,我会在一个大批量中得到几行 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)
所以这里的问题是响应 header 没有将 Content-Type
设置为 application/json
。当这个 header 设置不正确时,URLSession 数据任务将缓冲响应的前 512 个字节。