簡體   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