본문 바로가기

Android/Network7

[Android] WebSocket 이란? 들어가며이번 포스팅은 웹 소켓(Web Scoket)에 대한 포스팅을 하려고 합니다. 이 글을 읽으시는 분들은 아마 웹 소켓이 무엇인지 정도는 알고 있을 것이라고 생각합니다. 맞습니다. 실시간 통신이 필요할 때 적극적으로 사용되는 기술입니다. 그럼 왜 실시간 통신을 할 때 웹 소켓을 사용하는지, 기존에는 어떤 방식을 사용했고, 어떤 문제를 해결해 주는지, 어떻게 동작하는지 등등 알아보겠습니다. 웹 소켓의 등장 배경초기의 인터넷 통신 방식은 주로 HTTP를 이용한 클라이언트(요청) - 서버(응답) 모델을 통해 진행되었습니다.즉, 클라이언트가 서버에 요청(Request)을 보내고, 서버가 이에 응답(Response)하는 반이중 통신 방식을 따릅니다. 이 방식이 페이지를 요청하는 등의 간단한 작업에는 효과적입니.. 2025. 5. 22.
[Android] OkHttp Interceptor 정리 okHttpInterceptor란?OkHttp에서 제공하는 Interceptor는 요청 및 응답을 가로채고 조작할 수 있는 기능을 제공합니다. 주로 두 가지 종류의 인터셉터가 있습니다.Application InterceptorNetwork Interceptor. Application Interceptor애플리케이션 수준의 요청과 응답을 처리하는 인터셉터입니다. 네트워크 요청이 실제로 전송되기 전에 가로채고 수정할 수 있습니다.애플리케이션 수준에서 요청/응답을 가로챔.오직 한 번만 실행됨 (네트워크 요청이 실패해도 다시 실행되지 않음). 1. 헤더 수정 및 추가: 요청 헤더를 추가하거나 수정할 수 있습니다class CommonHeaderInterceptor() :Interceptor { overrid.. 2025. 3. 6.
[Android] 직렬화/역직렬화 라이브러리 (Gson, Moshi, Kotlin-serialization) 직렬화/ 역직렬화Serialization(직렬화)란 자바 시스템 내부에서 사용하는 객체를 외부의 자바 시스템에서도 사용할 수 있도록 byte형태로 데이터를 변환시키는 기술을 말합니다.안드로이드 상에선 직렬화를 이용해 액티비티간 또는 서비스간 클래스 타입의 데이터를 주고 받는 용도로 주로 사용합니다.역직렬화(desrialization)는 그 반대로 디스크에 저장한 데이터를 읽거나, 네트워크 통신으로 받은 데이터를 메모리에 쓸 수 있도록 다시 변환하는 것입니다. JSON 직렬화/역직렬화JSON?JSON은 JavaScript Object Notation의 약자로 Name과 Value로 이루어진 하나의 텍스트 형식입니다.JSON은 언어로부터 독립적이기 때문에 다수의 언어(C, C++, C#, java, java.. 2025. 2. 20.
[Android] Retrofit CallAdapter를 통해 효과적으로 예외 처리하기 이전 포스팅에서는 Retrofit 내부 동작에 대해서 알아보았습니다.내부적으로 CallAdapter를 생성하는 것을 확인할 수 있었는데요. 이를 커스텀해서 Retrofit에 적용할 수도 있습니다. 이번 포스팅에서 CallAdpater를 커스텀하여 적용함으로써 예외를 어떻게 효과적으로 처리할 수 있는지 알아보겠습니다. 다들 경험하셨다시피 앱을 제작할 때 네트워크 통신은 필수적으로 이뤄지는 경우가 많습니다. 프로젝트는 계속해서 늘어만 가고, 그 수에 비례해 증가하는 API, 그리고 비대해지는 Repository, Data Model은 걷잡을 수 없었습니다.. 따라서 관리 포인트 감소, 유지 보수 비용을 줄이는 것이 앱 개발자의 숙명이 아닐까라는 생각이 들었죠.그래서 우리는 무엇을 해야 하나요우리는 산재되어있.. 2025. 2. 20.
[Android] Retrofit 내부적으로 어떻게 동작할까? Retrofit2Retrofit2는 서버와 클라이언트(Android)의 HTTP 통신을 위해 Square사에서 제공하는 네트워크 라이브러리입니다. 기본적으로 Type-Safe한 형태로 지원되며, 내부적으로 OkHttp 클라이언트와 함께 동작합니다. 그동안 어떻게 사용해왔었나우리는 Retrofit2를 사용할 때 반드시 API Interface를 정의했었습니다. 보통 아래와 같은 3가지 방식으로 작성합니다.internal interface ApiService { // 1) @GET("boxoffice/searchDailyBoxOfficeList.json") fun getDailyBoxOffice( @Query("key") apiKey: String = BuildConfig.. 2025. 2. 20.
[Android] OkHttp vs Retrofit OkHttp vs Retrofit둘 다 같은 회사(Square)에서 만든 HTTP 통신 라이브러리이다. OkHttp는 REST API, HTTP 통신을 간편하게 구현할 수 있도록 여러가지 기능을 제공한다. 그리고 이러한 OkHttp를 기반으로 Type-safe하고, 더 직관적으로 사용할 수 있도록 인터페이스로 만들어진 게 Retrofit이다. 따라서 완전히 다르진 않지만, 지원 기능과 용도 면에서 어느정도 차이가 있다.Retrofit이 OkHttp보다 Type-safe한 이유?: 개발자가 Json의 Raw한 문자열을 잘못 파싱할 수도 있는 문제를 줄여준다. 또한, 직접 파싱할 필요가 없기 때문에 코드가 간결해지고 편리하다는 장점까지 있다. 다음과 같은 장점의 이유로 OkHttp보다 Retrofit이 더 .. 2023. 9. 13.