Skip to content

建立和設定客戶端

在新增 客戶端依賴 後,您可以透過建立 HttpClient 類別實例並傳遞一個 引擎 作為參數來實例化客戶端:

kotlin
import io.ktor.client.*
import io.ktor.client.engine.cio.*

val client = HttpClient(CIO)

在此範例中,我們使用 CIO 引擎。 您也可以省略引擎:

kotlin
import io.ktor.client.*

val client = HttpClient()

在此情況下,客戶端將根據 建置腳本中新增 的構件自動選擇一個引擎。您可以從 預設引擎 文件部分了解客戶端如何選擇引擎。

設定客戶端

基本設定

若要設定客戶端,您可以將額外的函式參數傳遞給客戶端建構函式。 HttpClientConfig 類別是設定客戶端的基礎類別。 例如,您可以使用 expectSuccess 屬性啟用 回應驗證

kotlin
import io.ktor.client.*
import io.ktor.client.engine.cio.*

val client = HttpClient(CIO) {
    expectSuccess = true
}

引擎設定

您可以使用 engine 函式設定引擎:

kotlin
import io.ktor.client.*
import io.ktor.client.engine.cio.*

val client = HttpClient(CIO) {
    engine {
        // Configure an engine
    }
}

有關其他詳細資訊,請參閱 引擎 部分。

外掛程式

若要安裝外掛程式,您需要將其傳遞給 客戶端設定區塊 內的 install 函式。例如,您可以透過安裝 Logging 外掛程式來記錄 HTTP 呼叫:

kotlin
import io.ktor.client.*
import io.ktor.client.engine.cio.*
import io.ktor.client.plugins.logging.*

val client = HttpClient(CIO) {
    install(Logging)
}

您也可以在 install 區塊內設定外掛程式。例如,對於 Logging 外掛程式,您可以指定記錄器、記錄級別和篩選記錄訊息的條件:

kotlin
val client = HttpClient(CIO) {
    install(Logging) {
        logger = Logger.DEFAULT
        level = LogLevel.HEADERS
        filter { request ->
            request.url.host.contains("ktor.io")
        }
        sanitizeHeader { header -> header == HttpHeaders.Authorization }
    }
}

請注意,特定的外掛程式可能需要單獨的 依賴

使用客戶端

在您 新增 所有必要的依賴並建立客戶端後,您可以使用它來 發出請求接收回應

關閉客戶端

在您完成使用 HTTP 客戶端後,您需要釋放資源:執行緒、連線和用於協程的 CoroutineScope。為此,請呼叫 HttpClient.close 函式:

kotlin
client.close()

請注意,close 函式禁止建立新請求,但不會終止目前活躍的請求。資源只會在所有客戶端請求完成後才會被釋放。

如果您需要將 HttpClient 用於單一請求,請呼叫 use 函式,它會在執行程式碼區塊後自動呼叫 close

kotlin
val status = HttpClient().use { client ->
    // ...
}

請注意,建立 HttpClient 並非廉價操作,在有多個請求的情況下最好重複使用其實例。