Ktor native request inteceptor

#native #interceptor #ktor

#собственный #перехватчик #ktor

Вопрос:

Мне нужно добавить заголовок к запросам на основе тела. Как я могу добавить перехватчик для клиентских запросов? Я пробовал

  httpClient.requestPipeline.intercept(HttpRequestPipeline.Send) { context: PipelineContext<Any, HttpRequestBuilder> ->
            context.proceed()
}
 

Но он не был вызван

Ответ №1:

Вы можете использовать State фазу HttpSendPipeline запроса для изменения:

 val client = HttpClient(Apache)

client.sendPipeline.intercept(HttpSendPipeline.State) {
    context.headers.append("myHeader", context.body.toString())
}

val r = client.get<String>("http://httpbin.org/get")
println(r)