Я пытаюсь отправить некоторые данные на сервер с помощью Swift:
Чтобы создать JSON, я делаю следующее.
let json: [String: Any] = ["jwt": jwt as Any, "comment": newmessage as Any,"isuser": true,"ismax": false]
Это похоже на работу, поскольку отладчик показывает 4 пары ключ-значение, перечисленные ниже.Затем я пытаюсь сериализовать, используя:
let jsonData = try? JSONSerialization.data(withJSONObject: json)
Это не похоже на работу, поскольку объект jsonData регистрирует отладчик как 0 байтов.
Мой код отправки:
let url = URL(string: "https://api-endpoint")!
var request = URLRequest(url: url)
request.httpMethod = "POST"
request.httpBody = jsonData
let task = URLSession.shared.dataTask(with: request) { data, response, error in
guard let data = data, error == nil else {
print(error?.localizedDescription ?? "No data")
return
}
let responseJSON = try? JSONSerialization.jsonObject(with: data, options: [])
if let responseJSON = responseJSON as? [String: Any] {
print(responseJSON)
}
}
task.resume()
}
Хотя компилятор не жалуется, в отладчике я вижу, что jsonData имеет 0 байтов, а json не отправляется.
Что не так с моим кодом:
Следует отметить, что компилятор заставил меня преобразовать некоторые данные в Any, хотя я знаю, что они являются строками.Объект json появляется в отладчике как:
(lldb) po json
▿ 4 elements
▿ 0 : 2 elements
- key : "comment"
▿ value : Optional<String>
- some : "Hi"
▿ 1 : 2 elements
- key : "isuser"
- value : true
▿ 2 : 2 elements
- key : "ismax"
- value : false
▿ 3 : 2 elements
- key : "jwt"
▿ value : Optional<String>
- some : "<-Long hash token ie string->"