카테고리 없음

OkHttp3 완벽 이해: 안드로이드와 자바 개발의 핵심 HTTP 클라이언트

idea9329 2025. 10. 24. 16:44
728x90
반응형

현대의 대부분 애플리케이션은 서버와 데이터를 주고받는다. 이때 핵심 역할을 하는 것이 바로 HTTP 클라이언트다. 안드로이드나 자바 환경에서 이 기능을 안정적이고 빠르게 구현하게 해주는 대표적인 라이브러리가 바로 OkHttp3다.


OkHttp3란 무엇일까?

OkHttp3는 Square에서 만든 오픈소스 HTTP 클라이언트 라이브러리로,
서버와의 네트워크 통신을 간단하고 효율적으로 처리할 수 있도록 설계되어 있다.
Python의 requests, JavaScript의 axios와 비슷한 역할을 하는 도구라고 보면 된다.

이 라이브러리는 Retrofit의 기반이기도 해서, Retrofit을 사용한다면 내부적으로 OkHttp3가 자동으로 작동한다.


OkHttp3의 주요 특징

1. 동기와 비동기 요청 모두 지원

  • 동기 방식은 요청이 끝날 때까지 코드가 멈추고,
  • 비동기 방식은 별도의 스레드에서 실행되어 UI를 멈추지 않는다.
// 동기 요청
Response response = client.newCall(request).execute();

// 비동기 요청
client.newCall(request).enqueue(new Callback() {
    @Override
    public void onResponse(Call call, Response response) throws IOException {
        System.out.println(response.body().string());
    }
    @Override
    public void onFailure(Call call, IOException e) {
        e.printStackTrace();
    }
});

2. 커넥션 풀과 HTTP/2 지원

같은 서버로 여러 번 요청할 때 매번 연결을 새로 여는 대신, 기존 연결을 재사용한다.
이를 통해 네트워크 효율과 속도가 향상된다.
또한 HTTP/2 프로토콜을 지원하여 여러 요청을 동시에 처리할 수 있다.


3. Interceptor로 요청/응답 제어

OkHttp3의 가장 강력한 기능 중 하나는 Interceptor다.
이 기능을 통해 요청 전에 헤더를 추가하거나, 응답을 가로채 로깅을 추가할 수 있다.

OkHttpClient client = new OkHttpClient.Builder()
    .addInterceptor(chain -> {
        Request newRequest = chain.request().newBuilder()
            .addHeader("Authorization", "Bearer token")
            .build();
        return chain.proceed(newRequest);
    })
    .build();

이렇게 하면 모든 요청에 자동으로 토큰이 포함된다.


4. 캐시, 리디렉션, 압축 자동 처리

  • 서버 응답을 캐시해 불필요한 요청을 줄이고,
  • 리디렉션(redirect) 을 자동으로 처리하며,
  • GZIP 압축 해제도 알아서 수행한다.
    이 모든 것이 기본 설정만으로 동작하기 때문에 개발자는 비즈니스 로직에만 집중할 수 있다.

OkHttp3 설치 방법

Gradle을 사용하는 프로젝트라면 아래 의존성을 추가하면 된다.

implementation("com.squareup.okhttp3:okhttp:4.12.0")

간단한 사용 예시

OkHttpClient client = new OkHttpClient();

Request request = new Request.Builder()
    .url("https://api.github.com/users/octocat")
    .build();

try (Response response = client.newCall(request).execute()) {
    System.out.println(response.body().string());
}

이 코드 한 줄로 GitHub API에 요청을 보내고, JSON 응답을 받아 출력할 수 있다.


OkHttp3를 쓰는 이유

  • 빠르고 안정적인 HTTP 통신
  • 복잡한 네트워크 예외 처리를 자동으로 처리
  • Retrofit, Glide 등 다양한 라이브러리의 핵심 기반
  • SSL, 인증서, 쿠키, 세션 등 고급 기능 완벽 지원

마무리

OkHttp3는 단순한 HTTP 클라이언트를 넘어,
네트워크 성능 최적화와 안정성의 표준으로 자리 잡았다.
안드로이드 개발자라면 반드시 익혀야 할 핵심 도구이자,
서버 애플리케이션에서도 충분히 활용 가능한 범용 네트워크 라이브러리다.

728x90
반응형