斯威夫特|多部分表单数据上载任务请求在AlamoFire起作用时不起作用

时间:2018-12-04 09:43:15

标签: swift alamofire multipartform-data nsurlsessionuploadtask

我几天来一直试图解决这个问题, 我正在尝试使用uploadTask做一个简单的多部分表单数据。

我猜我的上传任务无法正常运行,因为我可能缺少标题或正文信息, 因此,我尝试将其从AlamoFire中剥离,但没有成功。

当我在AlamoFire中处理多部分表单数据时,它确实起作用了,这里是我的代码:

                Alamofire.upload(
                multipartFormData: { multipartFormData in
                    multipartFormData.append(fileUrl, withName: "something")
            },
                to: "\(MyServerService.url)",
                encodingCompletion: { encodingResult in
                    switch encodingResult {
                    case .success(let upload, _, _):
                        upload.responseJSON { response in
                            print("upload success")
                        }
                    case .failure(let encodingError):
                        print("Upload failed \(encodingError)")
                    }
            })

我知道AlamoFire对url中的数据做了很多工作,所以我要做的是跟踪multipartFormData并尝试模仿它。

这里我的uploadTask无法正常工作:

 var request  = URLRequest(url: MyServerService.url)
    request.setValue("multipart/form-data; boundary=\(UUID.init().uuidString)", forHTTPHeaderField: "Content-Type")
    let contentLength = FileManager.default.contents(atPath: fileUrl.path)!.count
    request.setValue(String(contentLength), forHTTPHeaderField: "Content-Length")
    request.httpMethod = "POST"
    let config = URLSessionConfiguration.background(withIdentifier: MyServerService.sessionIdentifier)
    let session = URLSession(configuration: config, delegate: self, delegateQueue: nil)
    let task:URLSessionUploadTask = session.uploadTask(with: request, fromFile: fileUrl)
    task.resume()

如您所见,这是非常简单的请求,但是服务器没有任何答复。 URLSession请求中缺少什么?为什么它可以在AlamoFire上运行,而不能在本地Apple API中运行呢?

  • 注意:我已经检查了AlamoFire实现的内部,并验证它们与我完全一样正在执行File中的uploadTask。

任何帮助将不胜感激。

0 个答案:

没有答案