Http Client

预计阅读时间:2分钟

除了HTTP服务外,Ktor还包括一个灵活的异步HTTP客户端. 该客户端支持多个可配置的引擎 ,并具有自己的一组功能 .

可通过io.ktor:ktor-client-core:$ktor_version工件获得主要功能. 每个引擎都在单独的工件中提供.

目录:

Calls: Requests and Responses

您可以在各自的部分中检查如何发出请求以及如何接收响应 .

Concurrency

请记住,请求是异步的,但是在执行请求时,API会暂停其他请求,并且您的函数将被暂停直到完成. 如果要在同一块中一次执行多个请求,则可以使用launchasync功能,以后再获取结果. 例如:

Sequential requests

suspend fun sequentialRequests() {
    val client = HttpClient()

    // Get the content of an URL.
    val firstBytes = client.get<ByteArray>("https://127.0.0.1:8080/a")

    // Once the previous request is done, get the content of an URL.
    val secondBytes = client.get<ByteArray>("https://127.0.0.1:8080/b")

    client.close()
}

Parallel requests

suspend fun parallelRequests() = coroutineScope<Unit> {
    val client = HttpClient()

    // Start two requests asynchronously.
    val firstRequest = async { client.get<ByteArray>("https://127.0.0.1:8080/a") }
    val secondRequest = async { client.get<ByteArray>("https://127.0.0.1:8080/b") }

    // Get the request contents without blocking threads, but suspending the function until both
    // requests are done.
    val bytes1 = firstRequest.await() // Suspension point.
    val bytes2 = secondRequest.await() // Suspension point.

    client.close()
}

Examples

有关更多信息,请查看带有一些示例的示例页面 .

Features

有关更多信息,请检查功能页面以及所有可用功能.

by  ICOPY.SITE