투케이2K

428. (kotlin/코틀린) [유틸 파일] 도메인 별 쿠키 매니저에 저장된 쿠키 및 세션 확인 - domain CookieManager getCookies 본문

Kotlin

428. (kotlin/코틀린) [유틸 파일] 도메인 별 쿠키 매니저에 저장된 쿠키 및 세션 확인 - domain CookieManager getCookies

투케이2K 2023. 11. 4. 13:34

[개발 환경 설정]

개발 툴 : AndroidStudio

개발 언어 : Kotlin

 

[소스 코드]

        // -----------------------------------------------------------------------------------------
        // TODO [SEARCH FAST] : webviewGetDataStoreAllCookie : [웹뷰에 저장된 쿠키 및 세션 값 확인] : CookieManager getAllCookies
        // -----------------------------------------------------------------------------------------
        fun webviewGetDataStoreAllCookie(mContext: Context, webview: WebView): ArrayList<HashMap<String, Any>> {

            /**
             * // -----------------------------------------
             * [webviewGetDataStoreAllCookie  메소드 설명]
             * // -----------------------------------------
             * 1. 웹뷰에 저장된 쿠키 및 세션 값 확인
             * // -----------------------------------------
             * 2. 호출 방식 :
             *
             * C_WebviewCommonFunc.webviewGetDataStoreAllCookie(A_Intro@this, mmain_webview);
             *
             * // -----------------------------------------
             * 3. 리턴 데이터 :
             *
             * [{cookie=[MM_PF=SEARCH], domain=https://m.naver.com/}, {cookie=[ NNB=YP7KLNZKWZCWK], domain=https://m.blog.naver.com/Recommendation.naver}]
             * // -----------------------------------------
             */


            // [리턴 변수 선언 실시]
            val returnData = ArrayList<HashMap<String, Any>>()
            var M_LOG = ""


            // [로직 처리 실시]
            try {

                // [쿠키 매니저 선언 실시]
                val cookieManager = CookieManager.getInstance()
                cookieManager.setAcceptCookie(true)
                cookieManager.setAcceptThirdPartyCookies(webview, true)


                // [웹뷰 방문한 히스토리 내역 확인]
                val historyList = webviewHistoryList(mContext!!, webview!!)

                // [널 체크 실시]
                if (historyList != null && historyList.size > 0) {

                    // [쿠키 매니저에 저장된 쿠키 및 세션 값 확인]
                    if (cookieManager.hasCookies() == true) {

                        for (i in historyList.indices) {

                            // [도메인 기준으로 쿠키 값 확인]
                            var cookies = cookieManager.getCookie(historyList[i])

                            // [데이터 파싱 수행]
                            if (cookies != null && cookies == "" == false && cookies == "null" == false) {

                                // [MM_PF=SEARCH; NNB=TDE4OVP7VVCWK]
                                if (cookies.endsWith(";") == false) {
                                    cookies = "$cookies;"
                                }

                                val count = C_Util.stringCount(cookies, ";") // [쿠키 개수 확인]
                                if (count > 0) {

                                    // [파싱한 쿠키 데이터]
                                    val array = cookies.split(";".toRegex()).dropLastWhile { it.isEmpty() }.toTypedArray()

                                    // [JSON 데이터 생성]
                                    val map: HashMap<String, Any> = HashMap<String, Any>()

                                    map["domain"] = historyList[i]

                                    val list: ArrayList<String> = ArrayList()

                                    for (j in array.indices) {

                                        if (list.toString().contains(array[i].trim { it <= ' ' }) == false) {
                                            list.add(array[i].trim { it <= ' ' })
                                        }
                                    }

                                    map["cookie"] = list

                                    // [배열에 삽입 실시]
                                    returnData.add(map)
                                }
                            }
                        }

                        M_LOG = "[Success] :: cookieManager hasCookies true"

                    } else {
                        M_LOG = "[ERROR] :: cookieManager hasCookies false"
                    }

                } else {
                    M_LOG = "[ERROR] :: historyList is null"
                }

            } catch (e: Exception) {
                M_LOG = "[EXCEPTION] :: " + e.message.toString()
                S_Log._printStackTrace_(mContext, S_FinalMsg.LOG_BUG_STATE, null, e)
            }


            // [로그 출력 실시]
            //*
            // ===============================================================
            S_Log._F_(mContext!!, "웹뷰에 저장된 쿠키 및 세션 값 확인", arrayOf(
                "M_LOG :: $M_LOG",
                "RETURN :: $returnData"
            ))
            // ===============================================================


            // [리턴 변수 반환]
            return returnData
        }
 

[결과 출력]

 

 

반응형
Comments