URLSession.Datatask返回0字节的数据



试图弄清楚这一点,我被难住了。当进行REST调用以从响应(get或POST,每个都应该返回数据(中获取json数据时,我会返回0个字节。

这是预序列化。POST成功地在后端创建了一条消息,并且后端显示正在发送的响应;启用charles代理后,我已经确认有一个包含有效JSON数据的响应。

你知道为什么这只会在iOS中失败吗?Postman/Charles代理(来自iOS调用!(在响应中显示有效数据,但调试器一无所获。

提前感谢您的任何想法。

let components = URLComponents(string: "mysuperValidURL.com")
guard let url = components?.url else {
return
}
var request = URLRequest(url: url)
request.httpMethod = "POST"
setUrlRequestToken(request: &request)
let message = ChatMessage(content: message, group: group, userId: userId)
let jsonEncoder = JSONEncoder()
guard let data = try? jsonEncoder.encode(message) else {
return
}
URLSession.shared.uploadTask(with: request, from: data) { (data, response, error) in
// Here there be 0 bytes
}.resume()
}

数据有时会在调试器中以0字节的形式返回;添加带有调试说明的打印,以确保您正在获取数据。在这种情况下,是调试器的故障加上后来的序列化错误导致它看起来已损坏。

TLDR;不要相信实时调试器,请使用一些打印来进行健全性检查。

最新更新