|
1 | 1 | package cn.umafan.lib.android.util.network
|
2 | 2 |
|
| 3 | +import android.annotation.SuppressLint |
3 | 4 | import okhttp3.OkHttpClient
|
4 | 5 | import retrofit2.Retrofit
|
5 | 6 | import retrofit2.converter.gson.GsonConverterFactory
|
6 | 7 | import java.net.Proxy
|
| 8 | +import java.security.SecureRandom |
| 9 | +import java.security.cert.* |
| 10 | +import javax.net.ssl.SSLContext |
| 11 | +import javax.net.ssl.SSLSocketFactory |
| 12 | +import javax.net.ssl.TrustManager |
| 13 | +import javax.net.ssl.X509TrustManager |
| 14 | + |
7 | 15 |
|
8 | 16 | object ServiceCreator {
|
9 | 17 |
|
| 18 | + private fun createSSLSocketFactory(): SSLSocketFactory? { |
| 19 | + var ssfFactory: SSLSocketFactory? = null |
| 20 | + try { |
| 21 | + val mMyTrustManager = MyTrustManager() |
| 22 | + val sc = SSLContext.getInstance("TLS") |
| 23 | + sc.init(null, arrayOf<TrustManager>(mMyTrustManager), SecureRandom()) |
| 24 | + ssfFactory = sc.socketFactory |
| 25 | + } catch (ignored: Exception) { |
| 26 | + ignored.printStackTrace() |
| 27 | + } |
| 28 | + return ssfFactory |
| 29 | + } |
| 30 | + |
| 31 | + //实现X509TrustManager接口 |
| 32 | + @SuppressLint("CustomX509TrustManager") |
| 33 | + class MyTrustManager : X509TrustManager { |
| 34 | + @SuppressLint("TrustAllX509TrustManager") |
| 35 | + @Throws(CertificateException::class) |
| 36 | + override fun checkClientTrusted(chain: Array<X509Certificate?>?, authType: String?) {} |
| 37 | + @SuppressLint("TrustAllX509TrustManager") |
| 38 | + @Throws(CertificateException::class) |
| 39 | + override fun checkServerTrusted(chain: Array<X509Certificate?>?, authType: String?) {} |
| 40 | + |
| 41 | + override fun getAcceptedIssuers(): Array<X509Certificate> { |
| 42 | + return arrayOf() |
| 43 | + } |
| 44 | + } |
| 45 | + |
| 46 | + |
10 | 47 | private const val BASE_URL = "https://umalib.gitgud.site/"
|
11 | 48 |
|
12 | 49 | private val okHttpClient = OkHttpClient.Builder()
|
13 | 50 | .proxy(Proxy.NO_PROXY)
|
| 51 | + .sslSocketFactory(createSSLSocketFactory()!!, MyTrustManager()) |
14 | 52 | .build()
|
15 | 53 |
|
16 | 54 | private val retrofit: Retrofit = Retrofit.Builder()
|
|
0 commit comments