gpt4 book ai didi

kotlin - 如何为 KTOR HTTPclient Multiplatform Kotlin 项目配置引擎?还需要添加 SSL 证书

转载 作者:行者123 更新时间:2023-12-02 12:41:13 24 4
gpt4 key购买 nike

下面是我尝试过的代码。我正在 commonMain 块中尝试以下代码。

suspend fun callHttpFunction(){

val clientEngine = HttpClient{

engine {
pipelining = true
threadsCount = 4
}

}

clientEngine.post<String>("https","m2.testing.com",8080,
"/TokenServiceEncrypt/api/base/TokenUpdated",requestBlock
) {
headers.append("Content-Type", "application/json")
headers.append("Accept", "application/json")
headers.append("SessionToken", "seesfssfsf")
}
clientEngine.close()
}

//HttpClient(Apache) fails and so does HttpClient(OkHttp)

最佳答案

我设法使用返回 HttpClient 的期望/实际类每个平台都使用其专用的engine .

expect class HttpClientProvider() {
fun getHttpClient(host: String, sslPin: String): HttpClient
}

actual class HttpClientProvider {
actual fun getHttpClient(host: String, sslPin: String): HttpClient {
val okHttpClient = OkHttpClient.Builder().apply {
certificatePinner(
CertificatePinner.Builder()
.add(host, sslPin)
.build()
)
}.build()

return HttpClient(OkHttp) {
engine {
preconfigured = okHttpClient
}
}
}
}

如您所见,您可以通过 OkHttpClientpreconfigured在那里,您可以使用 OkHttp 的所有功能(我使用 certificatePinner()socketFactory()sslSocketFactory )。

这也适用于 iOS(还没有时间测试)。

private val client = HttpClientProvider().getHttpClient(stage.host, stage.sslPin).config {
requestTimeout?.let {
install(HttpTimeout) {
requestTimeoutMillis = it.toLongMilliseconds()
}
}

logLevel?.let {
install(Logging) {
logger = Logger.SIMPLE
level = it
}
}
}

你可以使用正常的 config { } - 块也是。

关于kotlin - 如何为 KTOR HTTPclient Multiplatform Kotlin 项目配置引擎?还需要添加 SSL 证书,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59229189/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com