주석이 달린 인터페이스 메서드를 네트워크 호출로 변환하는 Android 및 Java용 타입 안전 HTTP 클라이언트입니다.
lysine-dev/okhttp
JVM, Android, GraalVM용 HTTP 클라이언트로, 연결을 재사용하고 HTTP/2를 지원하며 응답을 기본적으로 캐시합니다.
- 스타
- 47,090
- 포크
- 9,298
- 열린 이슈
- 148
- 마지막 커밋
- 2시간 전
어떤 프로젝트인가요?
OkHttp는 Java, Kotlin, Android 애플리케이션을 위한 HTTP 클라이언트입니다. 기본 설정만으로도 효율적으로 동작하도록 설계되어, 동일한 호스트로 보내는 요청은 HTTP/2에서 하나의 소켓을 공유할 수 있고, HTTP/2를 사용할 수 없으면 연결 풀을 활용합니다. 응답은 자동으로 gzip 압축이 해제되며, 반복 요청은 네트워크에 접속하지 않고 응답 캐시에서 처리할 수 있습니다.
또한 네트워크 상태가 불안정한 상황도 처리합니다. 서비스가 여러 IP 주소로 해석되면 연결에 실패한 뒤 다른 주소로 재시도합니다. TLS 1.3, ALPN, 인증서 핀 고정을 지원하며, API는 fluent builder와 불변 요청·응답 객체를 사용합니다. 호출은 동기식 또는 콜백을 사용하는 비동기식으로 실행할 수 있습니다.
이 프로젝트는 최신 HTTP 사양(RFC 9110~9113, WebSocket, server-sent events)을 따르며, 코루틴, 로깅, SSE, DNS over HTTPS용 보조 모듈과 클라이언트 테스트를 위한 MockWebServer를 제공합니다. Android 5.0 이상과 Java 8 이상에서 실행되며, GraalVM 네이티브 이미지로 빌드할 수도 있습니다.
핵심 기능
- 01연결 풀링과 HTTP/2 멀티플렉싱으로 동일한 호스트에 반복 요청을 보낼 때 지연 시간을 줄입니다.
- 02GZIP 압축을 자동으로 해제하고 응답을 캐시해 중복 다운로드를 방지합니다.
- 03연결 시도에 실패하면 다른 IP 주소로 재시도합니다.
- 04TLS 1.3, ALPN, 인증서 핀 고정을 지원하며 Java에서 Conscrypt를 사용할 수 있습니다.
- 05불변 요청·응답 객체를 기반으로 동기식 및 비동기식 호출 API를 제공합니다.
- 06HTTP, HTTPS, HTTP/2 클라이언트 테스트에 사용할 수 있는 MockWebServer를 포함합니다.
활용 사례
- Java, Kotlin 또는 Android 앱에서 REST 또는 JSON API 호출하기.
- 압축과 캐싱으로 대역폭을 절약하며 대용량 미디어나 파일 다운로드하기.
- GraalVM으로 네이티브 명령줄 HTTP 도구 빌드하기.
- 모의 HTTP 서버를 대상으로 통합 테스트 작성하기.
빠른 시작
- 1
Gradle 빌드에 OkHttp 종속성을 추가합니다
implementation("com.squareup.okhttp3:okhttp:5.5.0") - 2
OkHttpClient를 만들고 README의 ‘Get a URL’ 예제를 사용해 요청을 보냅니다
사용 전 알아둘 점
- 본문이 포함된 GET 요청은 허용되지 않습니다.
- 응답 캐시는 다른 구현으로 대체할 수 있는 인터페이스가 아닙니다.
- Maven 설정에서는 okhttp-jvm 또는 okhttp-android를 선택해야 합니다. okhttp 아티팩트가 비어 있기 때문입니다.
토픽
자주 묻는 질문
- okhttp은(는) 무엇인가요?
- JVM, Android, GraalVM용 HTTP 클라이언트로, 연결을 재사용하고 HTTP/2를 지원하며 응답을 기본적으로 캐시합니다. OkHttp는 Java, Kotlin, Android 애플리케이션을 위한 HTTP 클라이언트입니다. 기본 설정만으로도 효율적으로 동작하도록 설계되어, 동일한 호스트로 보내는 요청은 HTTP/2에서 하나의 소켓을 공유할 수 있고, HTTP/2를 사용할 수 없으면 연결 풀을 활용합니다. 응답은 자동으로 gzip 압축이 해제되며, 반복 요청은 네트워크에 접속하지 않고 응답 캐시에서 처리할 수 있습니다.
- okhttp은(는) 무료로 사용할 수 있나요? 라이선스는 무엇인가요?
- okhttp은(는) Apache-2.0 라이선스의 오픈소스입니다. 상업용 제품에 사용하기 전에 라이선스 조건을 확인하세요.
- okhttp은(는) 아직 유지보수되고 있나요?
- 활발히 유지보수 중. okhttp의 마지막 커밋은 2026년 10월 21일입니다.
- okhttp은(는) 어디에 사용할 수 있나요?
- Java, Kotlin 또는 Android 앱에서 REST 또는 JSON API 호출하기. 압축과 캐싱으로 대역폭을 절약하며 대용량 미디어나 파일 다운로드하기. GraalVM으로 네이티브 명령줄 HTTP 도구 빌드하기. 모의 HTTP 서버를 대상으로 통합 테스트 작성하기.
- okhttp는 어떻게 설치하나요?
- Gradle 빌드에 OkHttp 종속성을 추가합니다: implementation("com.squareup.okhttp3:okhttp:5.5.0") OkHttpClient를 만들고 README의 ‘Get a URL’ 예제를 사용해 요청을 보냅니다
- okhttp은(는) 어디서 받을 수 있나요?
- 소스 코드와 설치 방법은 GitHub에 있습니다: https://github.com/lysine-dev/okhttp
요약은 프로젝트 README를 바탕으로 AI가 작성했습니다. GitHub 통계는 매일 갱신됩니다.
관련 프로젝트
C로 작성된 고성능 웹 서버, 리버스 프록시, 로드 밸런서, API 게이트웨이 및 콘텐츠 캐시입니다.
HTTP/1, HTTP/2, WebSocket 트래픽을 검사하는 콘솔·명령줄·웹 인터페이스를 갖춘 TLS 지원 인터셉팅 HTTP 프록시입니다.
서버에서 TLS/SSL 인증서를 추출해 PEM, DER 또는 truststore로 내보내는 CLI 도구입니다.
Go로 작성된 자체 호스팅 터널로, 자체 도메인과 서버를 통해 localhost 서비스를 인터넷에 공개합니다.
서비스 통신, 디스커버리, 트래픽 관리를 위한 RPC 및 마이크로서비스 프레임워크 Apache Dubbo의 Java 구현체입니다.