Загрузка веб-страницы

Swift:
Загрузка веб-страницы

Как это сделать:

Давайте используем URLSession для выполнения этой задачи. Swift делает это прямо к делу.

import Foundation

let url = URL(string: "https://www.example.com")!
let task = URLSession.shared.dataTask(with: url) { data, response, error in
    if let error = error {
        print("Ошибка:", error)
        return
    }

    if let httpResponse = response as? HTTPURLResponse, (200...299).contains(httpResponse.statusCode) {
        if let mimeType = httpResponse.mimeType, mimeType == "text/html",
           let data = data, let string = String(data: data, encoding: .utf8) {
            print("Содержимое скачанной веб-страницы:")
            print(string)
        } else {
            print("Неверный MIME-тип или кодировка.")
        }
    } else {
        print("Сервер ответил ошибкой.")
    }
}
task.resume()
// Убедитесь, что площадка для игр продолжает работать до завершения задачи
RunLoop.current.run()

Примерный вывод может выглядеть так:

Содержимое скачанной веб-страницы:
<!doctype html>...

Подробнее

API URLSession существует начиная с iOS 7 и macOS 10.9. В то время это было настоящее открытие, заменившее старый и более громоздкий NSURLConnection. Хотя URLSession мощный и гибкий, вы также можете рассмотреть сторонние библиотеки, такие как Alamofire, для более сложных сетевых нужд.

При реализации помните, что сетевые запросы асинхронны. Это означает, что ваше приложение может продолжать выполнять другие задачи, пока сервер отвечает. Также, правильное использование URLSession включает в себя корректную обработку ошибок и проверку статуса ответа сервера. Проверка MIME-типа крайне важна для того, чтобы убедиться, что вы получаете HTML, а не другие типы файлов, такие как JSON или изображение.

Смотрите также

Углубитесь в тему или изучите альтернативы:

  • Документация Apple URLSession: URLSession
  • Сетевое взаимодействие в Swift с помощью Alamofire: Alamofire
  • Использование паттерна async/await для URLSession в iOS 15+: URLSession async/await