Dejan Lozanovic
10/05/2024, 12:41 PMsuspend fun main() {
val token = "foobar"
val httpClient = HttpClient(CIO)
val response: HttpResponse =
httpClient.get("<https://echo.free.beeceptor.com/>") {
headers {
append(HttpHeaders.Authorization, "Bearer $token")
append(HttpHeaders.Accept, ContentType.Application.Json.toString())
}
}
println(response.bodyAsText())
}
And the response I'm getting back is
{
"method": "GET",
"protocol": "https",
"host": "<http://echo.free.beeceptor.com|echo.free.beeceptor.com>",
"path": "/",
"ip": "<http://xxx.xxx.xxx.xxx:4167|xxx.xxx.xxx.xxx:4167>",
"headers": {
"Host": "<http://echo.free.beeceptor.com|echo.free.beeceptor.com>",
"User-Agent": "Ktor client",
"Accept": "*/*",
"Accept-Charset": "UTF-8",
"Accept-Encoding": "gzip"
},
"parsedQueryParams": {}
}
Hristijan
10/05/2024, 2:58 PMval token = "foobar"
val httpClient = HttpClient(CIO)
val response: HttpResponse = httpClient.get("<https://echo.free.beeceptor.com/|https://echo.free.beeceptor.com/>") {
headers {
append(HttpHeaders.Authorization, "Bearer $token")
append(HttpHeaders.Accept, ContentType.Application.Json.toString())
}
}
println("Response status: ${response.status}")
println("Response headers: ${response.headers}")
println("Response body: ${response.bodyAsText()}")
httpClient.close()
Try printing the headers and seeAlexander Sysoev
10/05/2024, 4:16 PMHristijan
10/05/2024, 4:17 PMDejan Lozanovic
10/05/2024, 4:27 PMAleksei Tirman [JB]
10/07/2024, 7:27 AMalbrechtroehm
01/10/2025, 10:02 AMclient.get("<https://ktor.io>") {
headers {
append(HttpHeaders.Accept, "text/html")
append(HttpHeaders.Authorization, "abc123")
append(HttpHeaders.UserAgent, "ktor client")
}
}
and
client.get("<https://ktor.io>") {
headers.append(HttpHeaders.Accept, "text/html")
headers.append(HttpHeaders.Authorization, "abc123")
headers.append(HttpHeaders.UserAgent, "ktor client")
}
when i run these i get the following outputs from logging:
0:55:52.063 [DefaultDispatcher-worker-9 @coroutine#42] INFO io.ktor.client.HttpClient - REQUEST: <https://ktor.io>
METHOD: HttpMethod(value=GET)
COMMON HEADERS
-> Accept: application/json
-> Accept-Charset: UTF-8
CONTENT HEADERS
-> Content-Length: 0
BODY Content-Type: null
BODY START
BODY END
10:55:52.435 [DefaultDispatcher-worker-4 @coroutine#193] INFO io.ktor.client.HttpClient - REQUEST: <https://ktor.io>
METHOD: HttpMethod(value=GET)
COMMON HEADERS
-> Accept: text/html; application/json
-> Accept-Charset: UTF-8
-> Authorization: abc123
-> User-Agent: ktor client
CONTENT HEADERS
-> Content-Length: 0
BODY Content-Type: null
BODY START
albrechtroehm
01/10/2025, 10:24 AMio.ktor.http.HttpMessageBuilder.headers
and
io.ktor.http.headers
One adds your headers and one creates a Headers object … and you if don’t pay attention to the imports you get this behavior … 😅