2015-09-24 4 views
1

Этот код работы, прежде чем перейти на Swift 2.0 и Alamofire 2.0Alamofire 2,0 Multipart Form Data Error

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): 
        ... 
       } 
     }) 

Теперь линия:

upload.responseJson... 

всегда возвращают сбой «FAILURE: Error Domain = NSURLErrorDomain код = -999 «отменен» «

Кому-то удалось успешно использовать мультипартию в Alamofire 2.0 и знать, что я делаю неправильно?

+0

Проверяли ли Вы URL? – beretis

+0

Спасибо @beretis, я уже решил, что это проблема с заголовком. –

+0

, столкнувшись с той же проблемой. Можете ли вы опубликовать ответ. –

ответ

0

В моем случае это имело отношение к дополнительным заголовкам. Я ставлю общие заголовки, как это:

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) 

И для дополнительных заголовков, которые зависят от конкретных условий я положил в самом запросе:

if condition { 
    headers = ["Accept": contentType] 
} 

manager!.request(requestMethod, url, parameters: params, headers: headers).responseJSON { response in 
…