gpt4 book ai didi

swift - 分块请求中未调用 URLSession didReceiveData

转载 作者:行者123 更新时间:2023-11-30 10:49:23 25 4
gpt4 key购买 nike

我尝试监听来自 dweet.io 的数据服务。我用listen实时获取数据的方法。它使用分块的 HTTP 响应

我为此创建了简单的网络管理器

import Foundation

class NetworkManager: NSObject, URLSessionDataDelegate {
private lazy var session = URLSession(configuration: .default, delegate: self, delegateQueue: .main)
private lazy var task = self.session
.dataTask(with: URL(string: "https://dweet.io/listen/for/dweets/from/opposite-carpenter")!)

func start() {
self.task.resume()
}

// THIS METHOD IS NEVER CALLED
func urlSession(_ session: URLSession, dataTask: URLSessionDataTask, didReceive data: Data) {
print(data)
}

func urlSession(_ session: URLSession, task: URLSessionTask, didCompleteWithError error: Error?) {
print(error!.localizedDescription)
}

func urlSession(_ session: URLSession, dataTask: URLSessionDataTask, didReceive response: URLResponse, completionHandler: @escaping (URLSession.ResponseDisposition) -> Void) {
print(response)
completionHandler(.allow)
}
}

当我启动它时,我永远无法获取数据。但是我收到了 200 状态代码和 header 的响应。大约一分钟后,我收到错误网络连接丢失。

同时我使用 curl 来完成同样的事情。它正在按预期获取数据。

curl -i "https://dweet.io/listen/for/dweets/from/subdued-nation"

另一件事让我感到困惑的是,iOS 应用程序和curl 在 header 的Transfer-Encoding 字段中向我显示了不同的值:

UrlSession 返回“Transfer-Encoding”:“Identity”

同时,curl 显示 Transfer-Encoding: chunked (这是预期的)。

我尝试应用 this answer 中描述的方法但我得到了相同的结果。

最佳答案

我猜测问题出在短语 URLSession(configuration: .default) 上。使用 default 配置,您会在一分钟后超时。也就是说,据推测,这不是您想要的。

关于swift - 分块请求中未调用 URLSession didReceiveData,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54991617/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com