URLSession.Datatask返回0字节的数据

时间:2018-11-05 02:30:18

标签: ios swift nsurlsession

试图弄清楚这一点,我很沮丧。进行REST调用以从响应中获取json数据(GET或POST,每个都应返回数据)时,我获取了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()

}

1 个答案:

答案 0 :(得分:20)

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

TLDR;不信任实时调试器,请使用一些打印进行完整性检查。