Alamofire 2.0 多部分表单数据错误

Posted

技术标签:

【中文标题】Alamofire 2.0 多部分表单数据错误【英文标题】:Alamofire 2.0 Multipart Form Data Error 【发布时间】:2015-09-24 15:41:39 【问题描述】:

此代码在迁移到 Swift 2.0 和 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):
                    ...
                
         )

现在该行:

upload.responseJson...

总是返回失败 "FAILURE: Error Domain=NSURLErrorDomain Code=-999 "cancelled" "

有人成功地在 Alamofire 2.0 中使用了 multipart 并且知道我做错了什么吗?

【问题讨论】:

你检查过网址吗? 谢谢@beretis,我已经解决了这是标题的问题。 面临同样的问题。你能发布答案吗? 嗨@RahulKatariya,检查我的答案。放入 cmets 很长 【参考方案1】:

在我的情况下,它与额外的标题有关。我把一般的标题是这样的:

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
…

【讨论】:

以上是关于Alamofire 2.0 多部分表单数据错误的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Alamofire 4 中进行多部分表单数据上传?

使用 alamofire 的多部分/表单数据

Alamofire 多部分/表单数据上传请求中仅不发送图像

使用 Alamofire 上传多部分表单数据文件

Alamofire 4.0 / Swift 3.0 - 附加多部分表单数据(CSV 文件)

具有特定 JSON 要求的多部分表单数据 POST