신속한 간단한 POST 요청을하려고합니다. 객체 (알람) 배열을 게시하고 문제가 계속 발생하기를 바랍니다. 여기에 지금까지 무엇을 가지고 :Alamofire 및 EVReflection을 사용하는 JSON POST
func submitAlarms(alarms: [Alarm],onCompletion: @escaping ([Alarm]) -> Void){
let route = baseURL
let token = SessionManager().storedSession!.token.idToken
let headers = [
"Authorization": "Bearer \(token)"
]
let parameters = [
"alarms": alarms.toJsonString()]
print("Parameters ", parameters)
Alamofire.request(route, method: .post, parameters: parameters, encoding: JSONEncoding.default, headers: headers)
.validate()
.responseJSON{ response in
switch response.result{
case .failure(let error):
print("POST Alarm JSON Error: \(error)")
case .success(let value):
let json = JSON(value)
let alarms_json = json["alarms"]
print(alarms_json)
let alarms_string = alarms_json.rawString()
let alarms: [Alarm] = [Alarm](json: alarms_string)
//let alarms = [Alarm](json: res_string)
onCompletion(alarms)
}
}
}
I "m 주로 어떤 이유를 들어, Alamofire이 객체의 배열을하는 것 같지 수 parameters
부분에 문제가, 그래서 상단이 사전을 만들었습니다. . 경보의 배열을 보유 수준 alarm
키는 그때 JSON 문자열로 내 알람 배열을 변환 EVReflection를 사용하지만 그 변환은 나에게주는이 :.
Parameters ["alarms": "[\n{\n \"isActive\" : true,\n \"volume\" : 10,\n \"minute\" : 15,\n \"days\" : [\n 0,\n 1,\n 2,\n 3,\n 4,\n 5,\n 6\n ],\n \"brightness\" : 10,\n \"hour\" : 6,\n \"audio\" : 4,\n \"duration\" : 1,\n \"label\" : \"Alarm\",\n \"allowSnooze\" : false,\n \"isSynchronized\" : false\n}\n]"]
모든 \
및 \n
가 사용에서 오는 추가? Alamofire,이 여분 조각이 inval를 만들기 때문에 서버는 400로 응답합니다. id JSON. 내가 여기서 무엇을 놓치고 있니? 최신 Alamofire 및 EVReflection과 함께 Xcode 8/Swift 3을 사용하고 있습니다. 다른 예제를 살펴 보았지만 대부분 오래된 버전입니다. 또한 많은 사람들이 확장 기능과 사용자 지정 인코딩을 사용하기 때문에 간단한 요청에 대해서는 우스꽝 스럽습니다. 응답을 정리할 수 있으면 모든 도움과 보너스 포인트를 생각해보십시오. . 잘
예, 나는 하나의 항목과 하나의 json 문자열로 사전을 만드는 것에 동의합니다. 실제로 원하는 것은 알람 개체 배열을 포함하는 완전한 사전입니다. Alamofire는이를 json으로 적절하게 인코딩 할 것입니다. toDictionary는 나에게 정말 이상한 결과를주었습니다. 그러나 나는 그것에 많은 시간을 할애하지 않았습니다 .BTW, 나는 이미 POST 요청을하고 있습니다. 링크를 확인해 보겠습니다. – 7200rpm
을 입력 한 다음 사전을 해당 사전에 추가하지 않았는지 확인하십시오. .toDictionary()를 매개 변수에 넣으십시오. –