Отправка HTTP-запроса с базовой аутентификацией

Kotlin:
Отправка HTTP-запроса с базовой аутентификацией

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

Kotlin обрабатывает HTTP-запросы с помощью библиотек, таких как ktor или okhttp. Давайте на данный момент остановимся на okhttp.

Сначала добавьте библиотеку в ваш build.gradle:

dependencies {
    implementation("com.squareup.okhttp3:okhttp:4.9.0")
}

Пора кодить:

import okhttp3.Credentials
import okhttp3.OkHttpClient
import okhttp3.Request
import java.io.IOException

fun main() {
    val client = OkHttpClient()

    val username = "admin"
    val password = "password123"
    val credentials = Credentials.basic(username, password)

    val request = Request.Builder()
        .url("http://example.com/resource")
        .header("Authorization", credentials)
        .build()

    client.newCall(request).execute().use { response ->
        if (!response.isSuccessful) throw IOException("Unexpected code $response")

        println(response.body!!.string())
    }
}

Нажмите выполнить и наблюдайте за вашей консолью. Вы должны увидеть вывод защищенного ресурса.

Глубже

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

Альтернативы? Множество. OAuth для токенов, API ключи для простоты, или digest-аутентификация для обновления. Базовая аутентификация хороша для старта или для внутренних инструментов, но не для современного, ориентированного на безопасность веба.

Деталь реализации: Не изобретайте колесо. Библиотеки обрабатывают кодирование и нюансы протокола. OkHttp даже занимается повторными попытками и соединениями за вас. Помните, базовая аутентификация через HTTP - это табу, всегда используйте HTTPS, чтобы сохранить учетные данные в безопасности во время передачи.

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