투케이2K

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

Android

678. (Android/Java) [유틸 파일] 도메인 별 쿠키 매니저에 저장된 쿠키 및 세션 확인 - domain CookieManager getCookies

투케이2K 2023. 11. 4. 12:17

[개발 환경 설정]

개발 툴 : AndroidStudio

 

[소스 코드]

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

        /**
         * // -----------------------------------------
         * [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}]
         * // -----------------------------------------
         * */


        // [리턴 변수 선언 실시]
        ArrayList<HashMap<String, Object>> returnData = new ArrayList<>();

        String M_LOG = "";


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

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


            // [웹뷰 방문한 히스토리 내역 확인]
            ArrayList<String> historyList = C_WebviewCommonFunc.webviewHistoryList(mContext, webview);

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

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

                    for (int i=0; i<historyList.size(); i++){

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

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

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

                            int count = C_Util.stringCount(cookies, ";"); // [쿠키 개수 확인]

                            if (count > 0){

                                // [파싱한 쿠키 데이터]
                                String [] array = cookies.split(";");

                                // [JSON 데이터 생성]
                                HashMap <String, Object> map = new HashMap();
                                map.put("domain", String.valueOf(historyList.get(i)));

                                ArrayList <String> list = new ArrayList();
                                for (int j=0; j<array.length; j++) {
                                    if (list.toString().contains(array[i].trim()) == false){
                                        list.add(array[i].trim());
                                    }
                                }
                                map.put("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 (Exception e) {
            M_LOG = "[EXCEPTION] :: " + String.valueOf(e.getMessage());

            S_Log._printStackTrace_(mContext, S_FinalMsg.LOG_BUG_STATE, null, e);
        }


        // [로그 출력 실시]
        //*
        // ===============================================================
        S_Log._F_(mContext, "웹뷰에 저장된 쿠키 및 세션 값 확인", new String[]{
                "M_LOG :: " + String.valueOf(M_LOG),
                "RETURN :: " + String.valueOf(returnData)
        });
        // ===============================================================


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

[결과 출력]


 

반응형
Comments