본문 바로가기

안드로이드 기술 공유

간편하게 Retrofit 쿠키 유지하기!

일반적으로 API 기반의 네트워크 통신이 주가 되는 안드로이드에서는 쿠키 유지를 허용하는 경우가 드뭅니다.

하지만, 로그인 정보의 유지나 웹과의 데이터 통신을 하는 경우에는 쿠키 유지가 필요한 경우가 생깁니다.

 

기존에는 Interceptor를 사용하여 Preference에 쿠키를 저장해서 쓰는 방식이었지만, 이보다 훨씬! 간편하고 안정적으로 쿠키를 유지할 수 있는 방법이 있습니다.

 

바로 Retrofit에서 사용하는 Okhttp3의 cookieJar 를 사용하여 쿠키를 유지하는 방법입니다!

okhttp-urlconnection 라이브러리 추가

implementation "com.squareup.okhttp3:okhttp-urlconnection:4.9.1"

(square/okhttp github 페이지 참고)

Retrofit OkHttpClient에 쿠키 매니저 연결

val client = OkHttpClient.Builder()
        .cookieJar(JavaNetCookieJar(CookieManager())) //쿠키매니저 연결
        ...
        .build()

val retrofit = Retrofit.Builder()
        .client(client) //OkHttpClient 연결
        .baseUrl(BASE_URL)
        ...
        .build()
            
val apiService = retrofit.create(ApiService::class.java)

 

OkHttpClient 생성 시 cookieJar(JavaNetCookieJar(CookieManager())) 로 쿠키매니저를 연결하여 Retrofit Client에 간단히 주입만 해준다면 쿠키 정보가 포함된 Retrofit 통신이 손쉽게 가능해집니다! 😀