This code work before migrate to Swift 2.0 and Alamofire 2.0
manager.upload(requestMethod, NSURL(string: url)!, multipartFormData: { multipartFormData in
for param in params {
multipartFormData.appendBodyPart(data: param.1.dataUsingEncoding(NSUTF8StringEncoding)!, name: param.0)
}
multipartFormData.appendBodyPart(data: imageData!, name: "file", fileName: "tempImage", mimeType: "image/*") },
encodingCompletion: { encodingResult in
switch encodingResult {
case .Success(let upload, _, _):
upload.responseJSON { _, response, result in
switch result {
case .Success(let data):
...
case .Failure(let encodingError):
...
}
}
case .Failure(let encodingError):
...
}
} )
Now the line:
upload.responseJson...
always return fail "FAILURE: Error Domain=NSURLErrorDomain Code=-999 "cancelled" "
Someone has managed to use the multipart in Alamofire 2.0 successfully and know what am I doing wrong?
In my case it had to do with additional headers. I put general headers like this:
var defaultHeaders = Alamofire.Manager.sharedInstance.session.configuration.HTTPAdditionalHeaders ?? [:]
defaultHeaders["User-Agent"] = userAgent
if let ip = ifAddress {
defaultHeaders["X-Forwarded-For"] = ip
}
let configuration = NSURLSessionConfiguration.defaultSessionConfiguration()
configuration.HTTPAdditionalHeaders = defaultHeaders
manager = Alamofire.Manager(configuration: configuration)
And for additional headers that depend on a specific condition I put in the request itself:
if condition {
headers = ["Accept": contentType]
}
manager!.request(requestMethod, url, parameters: params, headers: headers).responseJSON { response in
…