Я пытаюсь решить эту проблему уже несколько дней, я пытаюсь создать простую многоэлементную форму данных с 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, а не в нативном API Apple?
- Примечание. Я проверил внутри реализации AlamoFire и убедился, что они выполняют uploadTask fromFile точно так же, как и я.
Любая помощь будет принята с благодарностью.