繁体   English   中英

URLSession.Datatask返回0字节的数据

[英]URLSession.Datatask returns 0 bytes of data

试着想出这个,我很难过。 在进行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()

}

数据有时会在调试器中返回0字节; 添加带有调试说明的打印件,以确保您获取数据。 在这种情况下,调试器的失败与后来的序列化错误混合导致它看起来被破坏。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM