我还是 KMM 的新手,需要有关 httpClient 的帮助以忽略 ssl 证书。我通过将以下代码添加到 HTTPClient Android Engine 使请求能够忽略 ssl 证书:
HTTPClient(Android){
engine{
sslManager = {
httpsURLConnection ->
httpsURLConnection.hostnameVerifier = HostnameVerifier { _, _ -> true }
httpsURLConnection.sslSocketFactory = sslContext.socketFactory
}
}
}
在 iOS 引擎上:
HTTPClient(Ios){
engine{
handleChallenge { session, task, challenge, completionHandler ->
completionHandler(NSURLSessionAuthChallengeUseCredential, null)
}
}
}
但是,我在 iOS 方面遇到了问题。NSURLSessionAuthChallengeUseCredential 尽管继承自 NSURLSessionAuthChallengeDisposition 是 Kotlin.Long 的一种类型,但完成处理程序的第一个参数仅采用 NSURLSessionAuthChallengeDisposition 类型,它是一种 platform.darwin.NSInteger。
起初,我想只是将 NSURLSessionAuthChallengeUseCredential 转换为 Int 或 platform.darwin.NSInteger。它没有在 android studio 触发任何错误,但是一旦我从 xcode 构建它,就会弹出以下错误:
类型不匹配:推断类型是 Int 但 NSURLSessionAuthChallengeDisposition /* = Long */ 是预期的
我认为这是一个错误,因为 xcode 期望 NSURLSessionAuthChallengeDisposition 是一个长值,而 kmm 接受 platform.darwin.NSInteger 的类型。