У меня проблемы со связью с REST-сервером. Я могу сделать звонок с успехом, используя Postman в качестве теста, чтобы убедиться в правильности тела JSON, которое выглядит следующим образом:
{
"name": "camera.setOptions",
"parameters": {
"options": {
"exposureProgram": 2,
"fileFormat": {
"type": "raw+",
"width": 6720,
"height": 3360
},
"_autoBracket": {
"_bracketNumber": 3,
"_bracketParameters": [
{
"aperture": 2.1,
"iso": 400,
"shutterSpeed": 0.002
},
{
"aperture": 2.1,
"iso": 400,
"shutterSpeed": 0.008
},
{
"aperture": 2.1,
"iso": 400,
"shutterSpeed": 0.0333
}
]
}
}
}
}
Однако в Swift я сначала генерирую JSON_bodyObj , который я использую для создания URLRequest
, где я устанавливаю тело с помощью: try self.request.httpBody = JSONSerialization.data(withJSONObject: JSON_bodyObj)
, который завершается неудачно (возвращает ошибку с сервера), когда я пытаюсь выполнить запрос.
Вот как я создаю JSON_bodyObj :
JSON_bodyObj = [
"name": "camera.setOptions",
"parameters": [
"options": [
"_function": "normal",
"exposureProgram": 1,
"fileFormat": [
"type": "raw+",
"width": 6720,
"height": 3360
],
"_autoBracket": [
"_bracketNumber": 3,
"_bracketParameters" : [
[
"aperture": 2.1,
"iso": 400,
"shutterSpeed": 0.002
],
[
"aperture": 2.1,
"iso": 400,
"shutterSpeed": 0.008
],
[
"aperture": 2.1,
"iso": 400,
"shutterSpeed": 0.0333
]
]
]
]
]
]
self.request.setValue("application/json;charset=utf-8", forHTTPHeaderField: "Content-Type")
self.request.setValue("application/json", forHTTPHeaderField: "Accept")
self.request.httpMethod = "POST"
try self.request.httpBody = JSONSerialization.data(withJSONObject: JSON_bodyObj)
let task = URLSession.shared.dataTask(with: self.request) { (data, response, error)//Closure }
task.resume()
Когда я исключаю блок _autoBracket , запрос успешно выполняется (хотя, очевидно, он не делает все, что мне нужно).
Я неправильно строю начальную JSON_bodyObj ?