Skip to content

Instantly share code, notes, and snippets.

@maiconhellmann
Last active May 1, 2024 14:12
Show Gist options
  • Save maiconhellmann/c61a533eca6d41880fd2b3f8459c07f7 to your computer and use it in GitHub Desktop.
Save maiconhellmann/c61a533eca6d41880fd2b3f8459c07f7 to your computer and use it in GitHub Desktop.
UnsafeHttpClient wrote in Kotlin
import android.annotation.SuppressLint
import okhttp3.OkHttpClient
import java.security.cert.CertificateException
import javax.net.ssl.SSLContext
import javax.net.ssl.TrustManager
import javax.net.ssl.X509TrustManager
object UnsafeOkHttpClient {
fun Builder(): OkHttpClient.Builder {
try {
// Create a trust manager that does not validate certificate chains
val trustAllCerts = arrayOf<TrustManager>(@SuppressLint("CustomX509TrustManager")
object : X509TrustManager {
@SuppressLint("TrustAllX509TrustManager")
@Throws(CertificateException::class)
override fun checkClientTrusted(chain: Array<java.security.cert.X509Certificate>, authType: String) {
// N / A
}
@SuppressLint("TrustAllX509TrustManager")
@Throws(CertificateException::class)
override fun checkServerTrusted(chain: Array<java.security.cert.X509Certificate>, authType: String) {
// N / A
}
override fun getAcceptedIssuers(): Array<java.security.cert.X509Certificate> {
return arrayOf()
}
})
// 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
val builder = OkHttpClient.Builder()
builder.sslSocketFactory(sslSocketFactory, trustAllCerts[0] as X509TrustManager)
// builder.hostnameVerifier { _, _ -> true }
builder.hostnameVerifier(hostnameVerifier = { _, _ -> true })
return builder
} catch (e: Exception) {
throw RuntimeException(e)
}
}
}
@maiconhellmann
Copy link
Author

Hey gdebenito,
thanks for letting me know
I haven't used it for ages
I'll update it with your suggestion.

@langrenfengzi
Copy link

Thanks

@monas231
Copy link

monas231 commented Feb 1, 2021

it work, thanks

@kotleni
Copy link

kotleni commented Dec 17, 2021

thx

@Sums-beep
Copy link

How to call this to my main activity?

@minhdangoz
Copy link

good job!

@vishavgoria
Copy link

Missing import: import javax.net.ssl.HostnameVerifier

@RavinCristiano
Copy link

for me still not working. Showing same error again and again. Please help me out.

@maiconhellmann
Copy link
Author

maiconhellmann commented Aug 11, 2023

Missing import: import javax.net.ssl.HostnameVerifier

@vishavgoria added, thanks for letting me know.

@RavinCristiano May you share some logs? It's been a while since a last used this approach, I'm not sure it still works.

@maiconhellmann
Copy link
Author

If anyone is wondering out there, it still works!
I've just updated it with suppress warnings and updated syntax.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment