Ktor 1.6.8 Help

Default request

This plugin (previously known as feature) allows you to configure some defaults for all the requests for a specific client.

Installation

When configuring the client, there is an extension method provided by this plugin to set some defaults for this client. For example, if you want to add a header to all the requests, or configure the host, port, and method or just set the path.

val client = HttpClient() { defaultRequest { // this: HttpRequestBuilder -> method = HttpMethod.Head host = "127.0.0.1" port = 8080 header("X-My-Header", "MyValue") } }

Example

An example showing how to the client behaves using the MockEngine:

import io.ktor.client.* import io.ktor.client.engine.* import io.ktor.client.engine.mock.* import io.ktor.client.features.* import io.ktor.client.request.* import io.ktor.http.* import kotlinx.coroutines.experimental.* import kotlinx.coroutines.experimental.io.* fun main(args: Array<String>) = runBlocking { val client = HttpClient(MockEngine) { engine { // Register request handler. addHandler { request -> with(request) { val responseText = buildString{ append("method=$method,") append("host=${url.host},") append("port=${url.port},") append("path=${url.fullPath},") append("headers=$headers") } val responseHeaders = headersOf("Content-Type" to listOf(ContentType.Text.Plain.toString())) respond(responseText, headers = responseHeaders) } } } // Configure default request plugin. defaultRequest { method = HttpMethod.Head host = "127.0.0.1" port = 8080 header("X-My-Header", "MyValue") } } val result = client.get<String> { url { encodedPath = "/demo" } } println(result) // Prints: method=HttpMethod(value=HEAD), host=127.0.0.1, port=8080, path=/demo, headers=Headers [X-My-Header=[MyValue], Accept=[*/*]] }
Last modified: 27 May 2021