Android HTTPS 请求 忽略证书
import javax.net.ssl.*
val x509 = if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.N) {
MyX509_2()
} else {
MyX509_1()
}val build = OkHttpClient.Builder()
.connectTimeout(defaultConnectTimeOut, TimeUnit.SECONDS)
.readTimeout(defaultReadTimeOut, TimeUnit.SECONDS)
.writeTimeout(defaultWriteTimeOut, TimeUnit.SECONDS)
.addInterceptor(httpLoggingInterceptor)
.sslSocketFactory(getSSLFactory(x509), x509)
.hostnameVerifier(HostnameVerifier { _, _ -> true })
return build.build()
private fun getSSLFactory(x509TrustManager: X509TrustManager): SSLSocketFactory { val trustAllCerts = arrayOf<TrustManager>(x509TrustManager) val sslContext = SSLContext.getInstance("SSL") sslContext.init(null, trustAllCerts, java.security.SecureRandom()) return sslContext.socketFactory }
class MyX509_1 : X509TrustManager {
override fun checkClientTrusted(
chain: Array<out java.security.cert.X509Certificate>?,
authType: String?
) {}
override fun checkServerTrusted(
chain: Array<out java.security.cert.X509Certificate>?,
authType: String?
) {}
override fun getAcceptedIssuers(): Array<java.security.cert.X509Certificate> {
return arrayOf()
}}
@RequiresApi(Build.VERSION_CODES.N)
class MyX509_2 : X509ExtendedTrustManager() {
override fun checkClientTrusted(
chain: Array<out java.security.cert.X509Certificate>?,
authType: String?,
socket: Socket?
) {
}override fun checkClientTrusted(
chain: Array<out java.security.cert.X509Certificate>?,
authType: String?,
engine: SSLEngine?
) {
}override fun checkClientTrusted(
chain: Array<out java.security.cert.X509Certificate>?,
authType: String?
) {
}override fun checkServerTrusted(
chain: Array<out java.security.cert.X509Certificate>?,
authType: String?,
socket: Socket?
) {
}override fun checkServerTrusted(
chain: Array<out java.security.cert.X509Certificate>?,
authType: String?,
engine: SSLEngine?
) {
}override fun checkServerTrusted(
chain: Array<out java.security.cert.X509Certificate>?,
authType: String?
) {
}override fun getAcceptedIssuers(): Array<java.security.cert.X509Certificate> {
return arrayOf()
}}