You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Ktor的HttpClient中获取并查看HTTP请求头

在Ktor HttpClient中查看发送前的请求头

1. 在HttpRequestBuilder lambda内直接查看

当你在构建请求的HttpRequestBuilder lambda里配置完请求头后,直接访问它的headers属性就能获取所有已设置的请求头。这个属性是HttpHeaders类型,支持遍历所有条目,也可以用get()方法单独获取指定头的值。

示例代码:

val client = HttpClient(OkHttp)

client.get("https://example.com") {
    // 设置请求头
    headers {
        append("Authorization", "Bearer token123")
        append("Content-Type", "application/json")
    }

    // 遍历打印所有请求头
    println("当前请求头:")
    headers.entries().forEach { (name, values) ->
        println("$name: ${values.joinToString(", ")}")
    }

    // 获取单个请求头的值
    val authHeader = headers["Authorization"]
    println("Authorization头的值:$authHeader")
}

2. 全局拦截所有请求,统一查看请求头

如果想对所有请求的头做统一监控(不用每个请求都写一遍查看逻辑),可以给HttpClient添加拦截器,在请求发送前拦截并查看头信息。

示例代码:

val client = HttpClient(OkHttp) {
    // 添加请求拦截逻辑
    install(HttpSend) {
        intercept { request ->
            // 在发送前打印请求头
            println("即将发送请求,URL:${request.url}")
            println("请求头列表:")
            request.headers.entries().forEach { (name, values) ->
                println("$name: ${values.joinToString(", ")}")
            }
            // 继续执行请求发送流程
            proceed(request)
        }
    }
}

// 发送测试请求
client.get("https://example.com") {
    headers {
        append("User-Agent", "Ktor-Client/2.3.0")
    }
}

补充说明

  • HttpHeaders是多值映射结构,同一个头名可能对应多个值,所以遍历建议用entries()获取完整的键值对,每个值是一个字符串列表。
  • 若只是快速查看所有头的整体情况,也可以直接打印headers.toString(),不过格式化遍历的可读性更强。

内容的提问来源于stack exchange,提问作者Adel M.

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.17 18:22:05