建立和設定客戶端
在新增 客戶端依賴 後,您可以透過建立 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並非廉價操作,在有多個請求的情況下最好重複使用其實例。
