Notice
Recent Posts
Recent Comments
Link
투케이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
}
[결과 출력]
반응형
'Kotlin' 카테고리의 다른 글
Comments