我几天来一直试图解决这个问题, 我正在尝试使用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中运行呢?
任何帮助将不胜感激。