如何在 ktor-client 中禁用重定向

vad*_*shb 2 httpclient kotlin ktor

我正在使用 ktor-client (ApacheHttpClient 引擎)创建简单的 HTTP 请求

val client = HttpClient(Apache) {
    engine {
        followRedirects = false
        this@HttpClient.expectSuccess = false
    }
}
Run Code Online (Sandbox Code Playgroud)

并用它来提交表单

client.submitForm<HttpResponse>(
        url = "https://foo.com/login",
        formParameters = Parameters.build {
            append("_username", username)
            append("_password", password)
        })
Run Code Online (Sandbox Code Playgroud)

在日志中,我可以看到带有 302 重定向的正确响应,我想从中获取并获取 cookie。但相反,我看到客户端继续前进并发出更多请求,最终失败:

io.ktor.client.features.SendCountExceedException:超出最大发送计数 20

如何在 ktor-client 中完全禁用基于 302 的重定向?

Nol*_*uen 8

ktor-client默认遵循重定向,以防止无限重定向的使用:

val client = HttpClient(HttpClientEngine) {
    followRedirects = false
}
Run Code Online (Sandbox Code Playgroud)