Ключ доступа в Kotlin
Закрытые API проверяют ключ в заголовке
"Authorization". Форма "Bearer"
с пробелом и секретом - распространенный вариант.
Клиент JDK добавляет пару имя-значение в построитель
запроса так же, как "Content-Type".
Эндпоинт "/bearer" на httpbin подтверждает
токен "secret". Достаточно напечатать код
состояния после обмена:
import java.net.URI
import java.net.http.HttpClient
import java.net.http.HttpRequest
import java.net.http.HttpResponse
fun main() {
val client = HttpClient.newBuilder().build()
val request = HttpRequest.newBuilder()
.uri(URI.create("https://httpbin.org/bearer"))
.header("Authorization", "Bearer secret")
.GET()
.build()
val response = client.send(
request,
HttpResponse.BodyHandlers.ofString(),
)
println(response.statusCode())
}
Без заголовка тот же адрес отвечает отказом. Код
401 сигнализирует, что ключ не передан
или не принят:
import java.net.URI
import java.net.http.HttpClient
import java.net.http.HttpRequest
import java.net.http.HttpResponse
fun main() {
val client = HttpClient.newBuilder().build()
val request = HttpRequest.newBuilder()
.uri(URI.create("https://httpbin.org/bearer"))
.GET()
.build()
val response = client.send(
request,
HttpResponse.BodyHandlers.ofString(),
)
println(response.statusCode())
}