| app/src/main/java/com/igo/user/network/RRetrofit.kt | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| app/src/main/java/com/igo/user/ui/trip/OrderDetailActivity.kt | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| app/src/main/res/raw/star_gopost_ci.pem | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
app/src/main/java/com/igo/user/network/RRetrofit.kt
@@ -4,11 +4,20 @@ import cn.sinata.xldutils.utils.LanguageUtil import cn.sinata.xldutils.utils.SPUtils import com.igo.user.BuildConfig import com.igo.user.IGoApplication import com.igo.user.R import com.igo.user.utils.Const import okhttp3.FormBody import okhttp3.OkHttpClient import retrofit2.Retrofit import retrofit2.adapter.rxjava2.RxJava2CallAdapterFactory import java.security.KeyStore import java.security.cert.CertificateFactory import java.security.cert.X509Certificate import javax.net.ssl.SSLContext import javax.net.ssl.SSLSocketFactory import javax.net.ssl.TrustManagerFactory import javax.net.ssl.X509TrustManager /** * 网络请求retrofit初始化。 @@ -17,6 +26,39 @@ private val loggingInterceptor by lazy { LoggingInterceptor() } /** * 创建只信任指定证书文件的TrustManager * @param certificateResId 证书资源ID (放在 res/raw/ 目录下) */ fun createTrustManager(certificateResId: Int): X509TrustManager? { val certificateFactory = CertificateFactory.getInstance("X.509") // 读取证书文件 IGoApplication.appContext?.resources?.openRawResource(certificateResId)?.use { val certificate = certificateFactory.generateCertificate(it) as X509Certificate // 创建包含该证书的KeyStore val keyStore = KeyStore.getInstance(KeyStore.getDefaultType()).apply { load(null, null) setCertificateEntry("server", certificate) } // 创建TrustManager val trustManagerFactory = TrustManagerFactory.getInstance( TrustManagerFactory.getDefaultAlgorithm() ).apply { init(keyStore) } return trustManagerFactory.trustManagers.first() as X509TrustManager } return null } private fun getSSLSocketFactory(trustManager: X509TrustManager): SSLSocketFactory { return SSLContext.getInstance("TLS").apply { init(null, arrayOf(trustManager), null) }.socketFactory } private val retrofit: Retrofit = Retrofit.Builder() @@ -64,6 +106,9 @@ chain.proceed(request) } .apply { createTrustManager(R.raw.star_gopost_ci)?.also { sslSocketFactory(getSSLSocketFactory(it), it) } if (BuildConfig.DEBUG) { addInterceptor(loggingInterceptor) } app/src/main/java/com/igo/user/ui/trip/OrderDetailActivity.kt
@@ -189,7 +189,7 @@ rating.setOnRatingChangeListener { if (!rating.clickable) return@setOnRatingChangeListener tv_action.visible() // tv_action.visible() if (it.toInt() != score) inputLabel(it.toInt()) score = it.toInt() @@ -507,7 +507,7 @@ } rating.isClickable = false order?.orderScore?.let { rating.setStar(order!!.orderScore!!.toFloat()) rating.setStar(it.toFloat()) } fl_label.removeAllViews() app/src/main/res/raw/star_gopost_ci.pem
New file @@ -0,0 +1,44 @@ -----BEGIN CERTIFICATE----- MIIHvjCCBaagAwIBAgIQA4r8nte51tpuS7tOKokKVzANBgkqhkiG9w0BAQsFADBb MQswCQYDVQQGEwJMVjEZMBcGA1UEChMQRW5WZXJzIEdyb3VwIFNJQTExMC8GA1UE AxMoR29HZXRTU0wgRzIgVExTIFJTQTQwOTYgU0hBMjU2IDIwMjIgQ0EtMTAeFw0y NjA4MTgwMDAwMDBaFw0yNzAzMDQyMzU5NTlaMEwxCzAJBgNVBAYTAkNJMRAwDgYD VQQHEwdBYmlkamFuMRUwEwYDVQQKEwxHTydQT1NUIFNBUkwxFDASBgNVBAMMCyou Z29wb3N0LmNpMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA+63DI3Ev P60/7UU2R2DZb+Iyc78+F0eE0ry9NR4tklZly+GZW/JvZOA6YF1HyDWS4XVAdbqy AgIoMCnpRBRpkJ4mITSC6wBkawRf8NLSFtcyaTm1+NILchJlEJyjijngO9qL04Nm TnsaZZZCN9jNXkYzt5BRjtliIuIVzgI4Kk8Qy722v2ke8DFte4+h/cjTyMoZT3sl 0+CMEXiE0xF5zKWMz7t9YVVH9/HrXZhVOLgqhzCF6+5OxNx7SzZSf2qcfsr38Kl5 8ySrL7QQEsTiqPJ1ks3HLh3w4NOTFeDW4OUqupNSW4TggA8XPxuL6XpxxqkpqTuW ChBAm5A5HicenQIDAQABo4IDizCCA4cwHwYDVR0jBBgwFoAUhavM7j4TQ2sB8fB6 BfGiOKENKmMwHQYDVR0OBBYEFI2BsjsFdu7pOuRHKmgH3neoQr40MCEGA1UdEQQa MBiCCyouZ29wb3N0LmNpgglnb3Bvc3QuY2kwPgYDVR0gBDcwNTAzBgZngQwBAgIw KTAnBggrBgEFBQcCARYbaHR0cDovL3d3dy5kaWdpY2VydC5jb20vQ1BTMA4GA1Ud DwEB/wQEAwIFoDAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwgZkGA1Ud HwSBkTCBjjBFoEOgQYY/aHR0cDovL2NybDMuZGlnaWNlcnQuY29tL0dvR2V0U1NM RzJUTFNSU0E0MDk2U0hBMjU2MjAyMkNBLTEuY3JsMEWgQ6BBhj9odHRwOi8vY3Js NC5kaWdpY2VydC5jb20vR29HZXRTU0xHMlRMU1JTQTQwOTZTSEEyNTYyMDIyQ0Et MS5jcmwwgYQGCCsGAQUFBwEBBHgwdjAkBggrBgEFBQcwAYYYaHR0cDovL29jc3Au ZGlnaWNlcnQuY29tME4GCCsGAQUFBzAChkJodHRwOi8vY2FjZXJ0cy5kaWdpY2Vy dC5jb20vR29HZXRTU0xHMlRMU1JTQTQwOTZTSEEyNTYyMDIyQ0EtMS5jcnQwDAYD VR0TAQH/BAIwADCCAYAGCisGAQQB1nkCBAIEggFwBIIBbAFqAHcATGPcmOWcHauI 9h6KPd6uj6tEozd7X5uUw/uhnPzBviYAAAGgFSQ54AAABAMASDBGAiEAndfuRXIm lsAqLfBHB/8lVGsl4rJYh/rp0U0L6A7tlyYCIQDOb0zrg7ydHNWFihZ3SWIlkC4a 5ncuftixGrR/De5/mwB3AETCvQzpFA5kpclKAZMKWqG7NZcOAO4RFoloKhxE17Vm AAABoBUkOjcAAAQDAEgwRgIhAItfCeicreu+Yn5m2KhoBw+lJnEBjiv9SjcGg/qa cIx2AiEA/EGMFlvBMPgUZgVDaFXWOjWW9uU/Eg/ub2uGA2Hzi8sAdgAcn2gs6frw RWlQ+BuWiofd2zIQ2EzmyLLjglJKxM9ZnwAAAaAVJDpVAAAEAwBHMEUCIQC+0wd2 vmNbE1e3y5y3tocUFN+e6mU/vWIlbI+E3wS2sQIgLyGxjGYKCjhDcn2RpMYR1yvR S5wHCsIFyBko3Md/7l8wDQYJKoZIhvcNAQELBQADggIBAJT2Axqsg0PzWehoD/jX Im3NRiUpfrWHUgSxt9q6LWCD8nCOE4tHrgWzxqDK6tnYTeWQtizg5T7InEmXNSj/ DgCCpaIjyLkSVgn/GsFCROfLQ0m2p5JYwnSdfNk/aajZG2EL6iL4/1kBDPh3LqS4 CrmqvHO+dhjUuu4/nr+ybE1ht4YfeTMXYQ6VSnpWxBlc3ssOw+fdBecllVQj4QPK 0mHL4J+Lh/pRCH/qTXvOtrfZUL5SuQuQp8SsZzdu3zapH/XnmzncTUXi06GFCKHD 9bXO2qs7CkDq78lClV3AffMiCwQe109QExgynBBISdMjVEnqmab2746ZUPJSbjI7 mOrVdt4Ocw941kHC9i2sS4WfEICo4YTrK5vNiEYmm4C8aZHIG7+IE5DMctNCa2ux XA3MpT6C9uDU+Tws60avC8M7PfD7/YWBEa2eEe/f3RYgNi6eeXoIXUlDAPAjiPJu gVVp//xERNJhcbxiKfoadyM6Fwe3CDUO5RC0WqcNtXuicuoHx+fOT4fJ6e1PX2Bl 0bHfLOFrNupcnhhG7JFPAVFxp5f0OrhV2B06fF9b0fDfHv6d0EeOQWk9Yc/gLu1z VbE4q6As/WTBKTRlOOnSk0XNpdSso1qkCjGXVE9vMdC/WwamX2j/VYNFmiP94Nhb Ud+2ZVTLy9aHpKpUJxnfW0wf -----END CERTIFICATE-----