sitelink1 | http://www.fun25.co.kr/blog/android-cook...on-sharing |
---|---|
sitelink2 | |
sitelink3 |
안드로이드 앱에서 서버와 세션을 HttpURLConnection 등의 HTTP 클라이언트를 이용해서 맺은 후에 웹뷰에서 세션을 이용할려면 아래와 같이 안드로이드에서 제공하는 CookieManager 를 이용하면 됩니다.
HttpURLConnection 의 Set-Cookie 헤더에서 세션 쿠키를 얻어서 CookieManager 에 설정
HttpsURLConnection con = (HttpsURLConnection) url.openConnection();
String COOKIES_HEADER = "Set-Cookie";
con.connect();
Map<String, List<String>> headerFields = con.getHeaderFields();
List<String> cookiesHeader = headerFields.get(COOKIES_HEADER);
if(cookiesHeader != null) {
for (String cookie : cookiesHeader) {
String cookieName = HttpCookie.parse(cookie).get(0).getName();
String cookieValue = HttpCookie.parse(cookie).get(0).getValue();
String cookieString = cookieName + "=" + cookieValue;
CookieManager.getInstance().setCookie("https://example.co.kr", cookieString);
}
}
위와 같이 해 두면 CookieManager 는 url 로 해당 쿠키값을 관리를 합니다. 이 값은 앱을 종료하고 다시 실행해도 유지가 되며 웹뷰에서는 해당 사이트로 접속시 자동으로 세션 쿠키값을 세팅해서 접속을 하게 되어 세션이 유지가 됩니다.
API 21 이전까지는 CookieSyncManager 라는것이 있어서 쿠키를 싱크를 해 줘야 했다는데 21 이후부터는 안드로이드 OS 단에서 자동으로 관리를 한다고 합니다.