투케이2K

340. (kotlin/코틀린) [Android 13] 웹뷰 onReceivedSslError 로드 시 SSL 에러 상태 감지 (Webview Load SSL Error) 본문

Kotlin

340. (kotlin/코틀린) [Android 13] 웹뷰 onReceivedSslError 로드 시 SSL 에러 상태 감지 (Webview Load SSL Error)

투케이2K 2023. 7. 9. 21:31

[개발 환경 설정]

개발 툴 : AndroidStudio

개발 언어 : Kotlin

 

[소스 코드]

 

        override fun onReceivedSslError(view: WebView, handler: SslErrorHandler, error: SslError) {
            // [E/chromium: [ERROR:ssl_client_socket_impl.cc 에러 해결 위함]
            try {

                // TODO [ssl 접속 에러가 발생한 경우 경고 팝업창 처리 실시]
                val builder = AlertDialog.Builder(this@A_Webview)
                builder.setMessage("이 사이트의 보안 인증서는 신뢰하는 보안 인증서가 아닙니다. 계속하시겠습니까?")
                builder.setPositiveButton("계속하기") { dialog, which -> handler.proceed() }
                builder.setNegativeButton("취소") { dialog, which -> handler.cancel() }
                val dialog = builder.create()
                dialog.show()

            } catch (e: Exception) {
                e.printStackTrace()
            }

            // [SSL 에러 타입 확인 실시]
            var errorSort = ""

            errorSort = when (error.primaryError) {
                SslError.SSL_UNTRUSTED -> "SSL_UNTRUSTED :: 이 사이트의 보안 인증서는 신뢰할 수 없습니다"
                SslError.SSL_EXPIRED -> "SSL_EXPIRED :: 보안 인증서가 만료되었습니다"
                SslError.SSL_IDMISMATCH -> "SSL_IDMISMATCH :: 보안 인증서가 ID 일치하지 않습니다"
                SslError.SSL_NOTYETVALID -> "SSL_NOTYETVALID :: 보안 인증서가 유효하지 않습니다"
                else -> "default :: " + error.primaryError.toString()
            }

            S_Log._E_(S_FinalMsg.LOG_Error_State, arrayOf(
                "URL :: " + view.url.toString(),
                "Error Sort :: " + "onReceivedSslError",
                "Error Description :: " + "http 요청 SSL 인증서 에러",
                "Error Response :: $errorSort"
            ))
        }

 

반응형
Comments