Конечная точка HTTP Dropbox зависает и выбрасывает тайм-аут - PullRequest
0 голосов
/ 08 июня 2018

Я пытаюсь загрузить изображение через HTTP-API Dropbox после аутентификации, используя функции и методы NATIVE iOS (нельзя использовать ALAMOFIRE).Когда я отправляю запрос, он дает мне тайм-аут через 30 секунд.

... Используемый код:

let data = UIImagePNGRepresentation(self.image!)
var request = URLRequest.init(url: url)

request.allHTTPHeaderFields = [
  "Authorization":"Bearer <TOKEN_HERE>",
  "Dropbox-API-Arg":"{\"path\": \"/TCC/uploaded.png\",\"mode\": \"add\",\"autorename\": false,\"mute\": false}",
  "Content-Type": "application/octet-stream",
]

  URLSession.shared.uploadTask(with: request,
                             from: data) { returnData, response, error in
  guard
    let httpURLResponse = response as? HTTPURLResponse, httpURLResponse.statusCode == 200
    else {
      if let callback = failure {
        callback()
      }
      return
  }
  //UI updates in main thread
  DispatchQueue.main.async() {
    if success != nil {
      success!()
    }

  }
  }.resume()

1 Ответ

0 голосов
/ 08 июня 2018

Hello @Danilo Rodrigues,

Отсутствует оператор, необходимо явно объявить используемый метод:

let data = UIImagePNGRepresentation(self.image!)
var request = URLRequest.init(url: url)

request.allHTTPHeaderFields = [
  "Authorization":"Bearer <TOKEN_HERE>",
  "Dropbox-API-Arg":"{\"path\": \"/TCC/uploaded.png\",\"mode\": \"add\",\"autorename\": false,\"mute\": false}",
  "Content-Type": "application/octet-stream",
]
request.httpMethod = "POST" //ADDED THIS LINE
  URLSession.shared.uploadTask(with: request,
                             from: data) { returnData, response, error in
  guard
    let httpURLResponse = response as? HTTPURLResponse, httpURLResponse.statusCode == 200
    else {
      if let callback = failure {
        callback()
      }
      return
  }
  //UI updates in main thread
  DispatchQueue.main.async() {
    if success != nil {
      success!()
    }

  }
  }.resume()
...