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

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

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

Давайте использовать HttpURLConnection Kotlin для быстрого захвата веб-страницы. Мы также будем использовать корутины для плавной работы в фоновом режиме. Вот краткое руководство:

import java.net.HttpURLConnection
import java.net.URL
import kotlinx.coroutines.*

fun main() = runBlocking {
    val url = "http://example.com"
    val result = withContext(Dispatchers.IO) {
        downloadWebPage(url)
    }
    println(result)
}

fun downloadWebPage(urlAddress: String): String {
    val url = URL(urlAddress)
    val connection = url.openConnection() as HttpURLConnection
    try {
        connection.connect()
        return connection.inputStream.bufferedReader().use { it.readText() }
    } finally {
        connection.disconnect()
    }
}

Пример вывода:

<!doctype html>
<html>
<head>
    <title>Example Domain</title>
...
</html>

Неплохо, правда? Вы получили HTML веб-страницы!

Глубокое погружение

Загрузка веб-страниц настолько же стара, как и сам веб. В 90-х люди использовали инструменты командной строки, такие как wget и curl. Они всё ещё используются, но когда вам нужен больший контроль или нужно интегрировать получение веб-контента в приложение, вы пишете код.

В Kotlin вы могли бы использовать HttpURLConnection Java или библиотеки, такие как OkHttp или Ktor, для более мощного подхода с дополнительными функциями. Приведенный выше пример базовый; в реальной жизни вы подумали бы об обработке ошибок, переадресациях и производительности. Может быть, добавить повторные попытки или тайм-аут? И не забывайте об обработке различных кодировок символов и типов контента.

Вы также подумали бы о потоках. Не хотели бы мы вешать главный поток при загрузке огромной страницы, не так ли? Поэтому корутины - они позволяют вашему приложению оставаться отзывчивым, загружая контент в фоновом режиме без перегружения.

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

Вот и всё — получите страницу, будьте умны в деталях и всегда уважайте данные и их источник. Счастливого кодинга!