Как отключить перенаправления в ktor-client

Я создаю простой HTTP-запрос с помощью ktor-client (движок ApacheHttpClient)

val client = HttpClient(Apache) {
    engine {
        followRedirects = false
        [email protected] = false
    }
}

и использовать его для отправки формы

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

В логах я вижу правильный ответ с 302-редиректом, который я хочу получить и получить от него куки. Но вместо этого я вижу, что клиент движется дальше и делает еще несколько запросов и, наконец, терпит неудачу с:

io.ktor.client.features.SendCountExceedException: превышено максимальное количество отправок 20

Как я могу полностью отключить переадресацию на основе 302 в ktor-client?


person vdshb    schedule 26.05.2019    source источник


Ответы (1)


ktor-client отслеживает перенаправления по умолчанию, чтобы предотвратить бесконечные перенаправления использовать:

val client = HttpClient(HttpClientEngine) {
    followRedirects = false
}
person Nolequen    schedule 28.05.2019
comment
Да, ты прав. Я пропустил правильное место, чтобы поставить followRedirects = false. Я поставил его в engine, но правильное место выше. - person vdshb; 28.05.2019