Я пытаюсь отправить / опубликовать изображение с параметрами, используя Alamofire.JSON, который я пытаюсь отправить, должен выглядеть следующим образом:
{"distance":"24", "pace":"10", "time":"60", "userEvents":["148","149"]}
Но я получаю сообщение об ошибке:
responseSerializationFailed (причина: Alamofire.AFError.ResponseSerializationFailureReason.inputDataNilOrZeroLength)
Я пытаюсь выяснить, есть ли проблема в моих параметрах и изображении.
func submit(uploadImage:UIImage, distance:String, pace:String, time:String, location:String!, userEvents:[Int32]!, completion: @escaping (_ err:Error?)->()){
print("Submitting...")
let _header: HTTPHeaders = ["Authorization":"Bearer \(properties.ACCESS_TOKEN)"]
let serverURL = String(format: SERVER_URL_SUBMIT)
let param: Parameters = ["distance":distance, "pace":pace, "time":time, "location":location, "userEvents":userEvents]
guard let imageData = uploadImage.jpegData(compressionQuality: 0.5) else {
print("Unable to get JPEG representation for image \(uploadImage)")
return
}
Alamofire.upload(multipartFormData: { MultipartFormData in
for (key, value) in param {
if let events = value as? [String], key == "userEvents" {
let arrData = try! JSONSerialization.data(withJSONObject: events, options: .prettyPrinted)
MultipartFormData.append(arrData as Data, withName: key)
}
MultipartFormData.append("\(value)".data(using: String.Encoding.utf8)!, withName: key)
}
MultipartFormData.append(imageData, withName: "image", fileName: "imageProof.jpg", mimeType: "image/jpeg")
}, to: serverURL, method: .post, headers: _header, encodingCompletion: { (result) in
switch result {
case .success(let upload, _, _):
upload.uploadProgress(closure: { (progress) in
print("Upload Progress: \(progress.fractionCompleted)")
})
upload.responseData(completionHandler: { (response) in
print(response)
switch response.result {
case .success:
if let resData = response.data {
do {
let res = try JSONSerialization.jsonObject(with: resData)
print(res)
} catch let err {
print(err)
}
}
break
case .failure(let err):
print("Error occured", err)
completion(err)
break
}
})
break
case .failure(let err):
print("Error occured", err)
completion(err)
break
}
})
}
Я думаю, что что-то не так в том, как я посылаю массив userEvents
, но я могу ошибаться.Может кто-нибудь помочь мне решить ошибку?