18034727885
2026-08-19 dd9d3930dd800af07aae4e28f8790eac4f8b6e51
增加验证证书
1个文件已添加
2个文件已修改
93 ■■■■■ 已修改文件
app/src/main/java/com/igo/user/network/RRetrofit.kt 45 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/igo/user/ui/trip/OrderDetailActivity.kt 4 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/raw/star_gopost_ci.pem 44 ●●●●● 补丁 | 查看 | 原始文档 | 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-----