문서와 API는 프로젝트 웹사이트를 참조하세요.
HTTP는 최신 애플리케이션 네트워크 방식입니다. 이것이 바로 우리가 데이터와 미디어를 교환하는 방식입니다. HTTP를 효율적으로 수행하면 작업 로드 속도가 빨라지고 대역폭이 절약됩니다.
OkHttp는 기본적으로 효율적인 HTTP 클라이언트입니다.
OkHttp는 네트워크에 문제가 있을 때 인내심을 갖고 일반적인 연결 문제를 자동으로 복구합니다. 서비스에 IP 주소가 여러 개 있는 경우 첫 번째 연결이 실패하면 OkHttp는 대체 주소를 시도합니다. 이는 중복 데이터 센터에서 호스팅되는 IPv4+IPv6 및 서비스에 필요합니다. OkHttp는 최신 TLS 기능(TLS 1.3, ALPN, 인증서 고정)을 지원합니다. 광범위한 연결을 위해 폴백하도록 구성할 수 있습니다.
OkHttp를 사용하는 것은 쉽습니다. 요청/응답 API는 유창한 빌더와 불변성을 바탕으로 설계되었습니다. 동기식 차단 호출과 콜백을 통한 비동기 호출을 모두 지원합니다.
OkHttp는 다음과 같은 최신 HTTP 사양을 따릅니다.
사양이 모호한 경우 OkHttp는 널리 사용되는 브라우저 또는 일반적인 HTTP 라이브러리와 같은 최신 사용자 에이전트를 따릅니다.
OkHttp는 원칙을 따르며 과도한 구성을 피합니다. 특히 이러한 구성이 버그가 있는 서버를 해결하거나 잘못된 시나리오를 테스트하거나 관련 RFC와 모순되는 경우에 그렇습니다. 잠재적으로 유효하지 않은 요청을 포함하여 광범위한 사용자 정의를 허용하여 이러한 격차를 메우는 다른 HTTP 라이브러리가 있습니다.
예시 제한사항
이 프로그램은 URL을 다운로드하고 해당 내용을 문자열로 인쇄합니다. 전체 소스.
OkHttpClient client = new OkHttpClient ();
String run ( String url ) throws IOException {
Request request = new Request . Builder ()
. url ( url )
. build ();
try ( Response response = client . newCall ( request ). execute ()) {
return response . body (). string ();
}
}
이 프로그램은 데이터를 서비스에 게시합니다. 전체 소스.
public static final MediaType JSON = MediaType . get ( "application/json" );
OkHttpClient client = new OkHttpClient ();
String post ( String url , String json ) throws IOException {
RequestBody body = RequestBody . create ( json , JSON );
Request request = new Request . Builder ()
. url ( url )
. post ( body )
. build ();
try ( Response response = client . newCall ( request ). execute ()) {
return response . body (). string ();
}
}
추가 예제는 OkHttp Recipes 페이지에 있습니다.
OkHttp는 Android 5.0 이상(API 레벨 21 이상) 및 Java 8 이상에서 작동합니다.
OkHttp는 고성능 I/O 및 Kotlin 표준 라이브러리를 위해 Okio를 사용합니다. 둘 다 강력한 이전 버전과의 호환성을 갖춘 작은 라이브러리입니다.
OkHttp를 최신 상태로 유지하는 것이 좋습니다. 웹 브라우저 자동 업데이트와 마찬가지로 HTTPS 클라이언트를 최신 상태로 유지하는 것은 잠재적인 보안 문제에 대한 중요한 방어책입니다. 우리는 동적 TLS 생태계를 추적하고 OkHttp를 조정하여 연결성과 보안을 향상시킵니다.
OkHttp는 플랫폼에 내장된 TLS 구현을 사용합니다. Java 플랫폼에서 OkHttp는 BoringSSL을 Java와 통합하는 Conscrypt도 지원합니다. OkHttp는 첫 번째 보안 공급자인 경우 Conscrypt를 사용합니다.
Security . insertProviderAt ( Conscrypt . newProvider (), 1 );
OkHttp 3.12.x
분기는 Android 2.3+(API 레벨 9+) 및 Java 7+를 지원합니다. 이러한 플랫폼은 TLS 1.2에 대한 지원이 부족하므로 사용해서는 안 됩니다.
우리의 변경 로그에는 릴리스 기록이 있습니다.
최신 릴리스는 Maven Central에서 사용할 수 있습니다.
implementation( " com.squareup.okhttp3:okhttp:4.12.0 " )
스냅샷 빌드를 사용할 수 있습니다. R8 및 ProGuard 규칙을 사용할 수 있습니다.
또한 OkHttp 아티팩트를 최신 상태로 유지하고 버전 호환성을 확인하는 데 도움이 되는 BOM(재료 명세서)이 있습니다.
dependencies {
// define a BOM and its version
implementation(platform( " com.squareup.okhttp3:okhttp-bom:4.12.0 " ))
// define any required OkHttp artifacts without version
implementation( " com.squareup.okhttp3:okhttp " )
implementation( " com.squareup.okhttp3:logging-interceptor " )
}
OkHttp에는 HTTP, HTTPS 및 HTTP/2 클라이언트를 테스트하기 위한 라이브러리가 포함되어 있습니다.
최신 릴리스는 Maven Central에서 사용할 수 있습니다.
testImplementation( " com.squareup.okhttp3:mockwebserver:4.12.0 " )
MockWebServer는 먼저 내부 테스트에 사용되며 OkHttp 클라이언트를 사용하는 앱의 기본 테스트에 사용됩니다. 독립형으로 개발된 완전한 기능을 갖춘 HTTP 테스트 라이브러리는 아닙니다. 새로운 기능을 위해 적극적으로 개발되고 있지 않습니다. 따라서 귀하의 요구 사항이 MockWebServer보다 커질 수 있으며 MockServer와 같은 보다 완전한 기능을 갖춘 테스트 라이브러리를 사용할 수도 있습니다.
Graal https://www.graalvm.org/를 사용하여 네이티브 이미지를 빌드하면 자동으로 작동합니다. 현재 최종 출시 버전이 아니므로 5.0.0-alpha.2
사용해야 합니다. 발견한 버그나 해결 방법을 보고해 주세요.
예제 빌드는 okcurl 모듈을 참조하세요.
$ ./gradlew okcurl:nativeImage
$ ./okcurl/build/graal/okcurl https://httpbin.org/get
Copyright 2019 Square, Inc.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.