Jeff
09/09/2021, 9:04 AMREQUEST https://....... failed with exception: io.ktor.client.features.HttpRequestTimeoutException: Request timeout has been expired [url=https://......., request_timeout=15000 ms]
Piotr Krzemiński
09/09/2021, 9:15 AMJeff
09/09/2021, 9:23 AMPiotr Krzemiński
09/09/2021, 9:55 AMJeff
09/09/2021, 10:11 AMPiotr Krzemiński
09/09/2021, 10:12 AMJeff
09/09/2021, 10:12 AMPiotr Krzemiński
09/09/2021, 10:15 AMJeff
09/09/2021, 10:16 AMPiotr Krzemiński
09/09/2021, 10:17 AMJeff
09/09/2021, 10:19 AMsingle<HttpClient> {
HttpClient(OkHttp){
install(JsonFeature) {
serializer = KotlinxSerializer(json)
}
engine {
preconfigured = getUnsafeOkHttpClient()
}
install(HttpTimeout) {
requestTimeoutMillis = 15000L
connectTimeoutMillis = 15000L
socketTimeoutMillis = 15000L
}
install(Logging) {
logger = object : Logger {
override fun log(message: String) {
Log.v("Logger Ktor =>", message)
}
}
level = LogLevel.ALL
}
install(ResponseObserver) {
onResponse { response ->
Log.d("HTTP status:", "${response.status.value}")
}
}
install(DefaultRequest) {
header("Connection", "close")
}
expectSuccess = false
}
}
private fun getUnsafeOkHttpClient(): OkHttpClient {
try {
// Create a trust manager that does not validate certificate chains
val trustAllCerts = arrayOf<TrustManager>(object : X509TrustManager {
override fun getAcceptedIssuers(): Array<X509Certificate?> = arrayOfNulls(0)
override fun checkClientTrusted(certs: Array<X509Certificate?>?, authType: String?) {}
override fun checkServerTrusted(certs: Array<X509Certificate?>?, authType: String?) {}
})
// Install the all-trusting trust manager
val sslContext = SSLContext.getInstance("SSL")
sslContext.init(null, trustAllCerts, java.security.SecureRandom())
// Create an ssl socket factory with our all-trusting manager
val sslSocketFactory = sslContext.socketFactory
return OkHttpClient.Builder()
.sslSocketFactory(sslSocketFactory, trustAllCerts[0] as X509TrustManager)
.retryOnConnectionFailure(true)
.hostnameVerifier { _, _ -> true }.build()
} catch (e: Exception) {
throw RuntimeException(e);
}
}
Piotr Krzemiński
09/09/2021, 12:49 PM