Свифт |запрос на загрузку данных из нескольких форм не работает, пока AlamoFire не работает - PullRequest
0 голосов
/ 04 декабря 2018

Я пытаюсь решить эту проблему уже несколько дней, я пытаюсь создать простую многоэлементную форму данных с 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 точно так же, как и я.

Любая помощь будет принята с благодарностью.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...