본문 바로가기

안드로이드

Retrofit - 세션 유지하기

반응형

https://github.com/square/okhttp/tree/master/okhttp-urlconnection

square/okhttp

Square’s meticulous HTTP client for the JVM, Android, and GraalVM. - square/okhttp

github.com

세션 ( Session ) 을 유지한다는 것은
쉽게 서버가 응답으로 보내는 쿠키 정보 ( "Set-Cookie" ) 를
다음 요청에 포함시킨다는 것을 말한다.

서버 요청에 주로 사용되는 Retrofit 은 단발성 요청만을 지원하기에
내부적으로 따로 세션을 유지해주지 않는다.

사실 API 기반의 요청이 주가 되는 안드로이드에서는 이러한 세션 유지는 크게 필요가 없다.
연결을 보장하기 위해선 대부분 Token 등을 통해서 확인하고 필요 유무는 API 명세에 대부분 확인 할 수 있기 때문이다.

쿠키를 통한 세션 유지가 필요한 곳은 API가 아닌 웹을 긁어 올때, 그것도 웹에서 로그인후에 데이터를 긁어 올때 필요해진다.

Implementation("com.squareup.okhttp3:okhttp-urlconnection:4.9.0")

"okhttp-urlconnection" 라이브러리를 앱에 추가한다.

val okHttpClient = OkHttpClient.Builder()
                   .cookieJar(JavaNetCookieJar(CookieManager()))
                   ...
                   .build()

val retrofit = Retrofit.Builder()
                 .baseUrl(baseUrl)
               .client(okHttpClient)
               ...
               .build()

val service = retrofit.create(ABCService::class.java)

"cookieJar(JavaNetCookieJar(CookieManager()))" 를 통해서
OkHttpClient 생성시에 쿠키매니저를 연결시켜 준다.

끝.

이러면 service를 통해서 진행된 요청의 응답에서 쿠키 정보가 포함되어 있다면,
retrofit은 알아서 다음 요청에 해당 쿠키를 포함하여 요청한다.

반응형