Привет посетитель! Сегодня мы напишем класс RequestHelper, который поможет нам совершить простой HTTP запрос в Kotlin без дополнительных параметров. Данный способ я использовал в нескольких простых проектах, а полученный HTML потом парсил при помощи Regexp().
Для начала нам понадобится HttpURLConnection, с помощью которого будем «ходить в Сеть». Для чтения данных применим InputStreamReader и BufferedReader, с его методом readText(). Исключения будем обрабатывать при помощи try..catch..finally.
class RequestHelper {
fun getData(url: String): String {
val sb = StringBuilder()
with(URL(url).openConnection() as HttpURLConnection) {
addRequestProperty("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) " +
"AppleWebKit/537.36 (KHTML, like Gecko) " +
"Chrome/87.0.4280.141 Safari/537.36")
try {
val text = inputStream.bufferedReader().readText()
sb.append(text)
} catch (ex: Exception) {
ex.printStackTrace()
} finally {
disconnect()
}
}
return sb.toString()
}
}
Функция работает очень просто. Сначала создается строка при помощи StringBuilder(). Затем мы используем стандартный класс HttpURLConnection вкупе с конструкцией with из Kotlin.
Не забываем добавлять заголовок User-Agent. Зачем? Чтобы некоторые ресурсы не отдавали ошибку вместо контента. Записываем при помощи bufferedReader текст и возвращаем наш ответ. Не забываем после обработки ошибок в блоке try catch закрыть соединение при помощи метода disconnect().
Код из статьи на GitHub — httpRequest
P.S.
Можно конечно оставить одну функцию, без создания класса. Но я использовал класс? потому что в моих проектах этот класс существенно больше, там есть и генерация timestamp, и смена useragent и еще много чего. Поэтому, если Вам все это не нужно, а надо просто отправить HTTP запрос в Kotlin то можно оставить только метод — getData()
Конечно, кроме HttpUrlConnection существует много способов, как получить данные из Сети. Я говорю о таких библиотеках как Retrofit, OkHttp и других. Они существенно расширяют функциональность и позволяют выполнять http запросы в Kotlin синхронно и асинхронно.
В следующих статьях мы подробно рассмотрим приемы работы с различными библиотеками для http запросов в Kotlin, а также изучим: как отправлять POST запросы в Kotlin, как получать и сохранять cookie, прикреплять form data и многое другое.