URLSession.Datatask returns 0 个字节的数据
URLSession.Datatask returns 0 bytes of data
试图弄清楚这一点,我被难住了。当进行 REST 调用以从响应(GET 或 POST 返回 json 数据时,每个应该 return 数据)我返回 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;不要相信实时调试器,使用一些打印来进行完整性检查。
试图弄清楚这一点,我被难住了。当进行 REST 调用以从响应(GET 或 POST 返回 json 数据时,每个应该 return 数据)我返回 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;不要相信实时调试器,使用一些打印来进行完整性检查。