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, для более мощного подхода с дополнительными функциями. Приведенный выше пример базовый; в реальной жизни вы подумали бы об обработке ошибок, переадресациях и производительности. Может быть, добавить повторные попытки или тайм-аут? И не забывайте об обработке различных кодировок символов и типов контента.
Вы также подумали бы о потоках. Не хотели бы мы вешать главный поток при загрузке огромной страницы, не так ли? Поэтому корутины - они позволяют вашему приложению оставаться отзывчивым, загружая контент в фоновом режиме без перегружения.
Смотрите также
- OkHttp: https://square.github.io/okhttp/
- Ktor Client: https://ktor.io/docs/client.html
- Корутины Kotlin: https://kotlinlang.org/docs/coroutines-overview.html
- Java HttpURLConnection: https://docs.oracle.com/javase/8/docs/api/java/net/HttpURLConnection.html
Вот и всё — получите страницу, будьте умны в деталях и всегда уважайте данные и их источник. Счастливого кодинга!