Чтение данных из URL-адреса с помощью URLSession

Я использую URLSession для извлечения данных из URL-адреса.

func scheduleURLSession() {
    let backgroundConfigObject = URLSessionConfiguration.background(withIdentifier: "myIdentifier...")
    let backgroundSession = URLSession(configuration: backgroundConfigObject, delegate: self, delegateQueue: nil)
    let retrieveTask = backgroundSession.downloadTask(with: URL(string: "https://api.wedsblog.net/v2/index.php?bitcoin&simple")!)
    retrieveTask.resume()
}

Когда загрузка завершена

func urlSession(_ session: URLSession, downloadTask: URLSessionDownloadTask, didFinishDownloadingTo location: URL) { }

Будет вызван. Как я могу прочитать содержимое загруженного файла? Является ли «.downloadTask» правильной функцией или мне использовать другую?


person Wed    schedule 24.06.2016    source источник
comment
Вы должны использовать dataTask.   -  person Code    schedule 24.06.2016
comment
Спасибо. С вашей подсказкой я смог найти решение   -  person Wed    schedule 24.06.2016


Ответы (2)


Нашел следующее решение:

Реализовано URLSessionDataDelegate

func scheduleURLSession() {
        let backgroundConfigObject = URLSessionConfiguration.background(withIdentifier: "myIdentifier")
        let backgroundSession = URLSession(configuration: backgroundConfigObject, delegate: self, delegateQueue: nil)
        let retrieveTask = backgroundSession.dataTask(with: URL(string: "https://api.wedsblog.net/v2/index.php?bitcoin&simple")!)
        retrieveTask.resume()
}

func urlSession(_ session: URLSession, dataTask: URLSessionDataTask, didReceive data: Data) {
    print(String(data: data, encoding: String.Encoding.utf8)!)
}
person Wed    schedule 24.06.2016
comment
Не могли бы вы поделиться остальным решением? Я изо всех сил пытаюсь получить полную фоновую URLSession для надежной работы. Документация сбивает с толку, и я нигде не смог найти полный пример. - person Wayne Henderson; 10.11.2016

let session = NSURLSession.sharedSession()
let task = session.dataTaskWithURL(url) {(data, response, error) -> Void in { // First check if error is not nil
  // Second check what is status code of your http response
  // Third do with data what you want(parse to objects)
} 

Я думаю, это полезно.

person Milos Mandic    schedule 24.06.2016
comment
@Wed - бесполезный ответ :-( Все, что вы на самом деле сказали здесь, это - это не лучший способ сделать это, но я не собираюсь рассказывать вам, как его улучшить. - person Russell; 17.01.2017