Lihat situs web proyek untuk dokumentasi dan API.
HTTP adalah cara aplikasi modern jaringan. Begitulah cara kami bertukar data & media. Melakukan HTTP secara efisien membuat barang Anda dimuat lebih cepat dan menghemat bandwidth.
OkHttp adalah klien HTTP yang efisien secara default:
OkHttp bertahan ketika jaringan bermasalah: ia akan pulih secara diam-diam dari masalah koneksi yang umum. Jika layanan Anda memiliki beberapa alamat IP, OkHttp akan mencoba alamat alternatif jika koneksi pertama gagal. Hal ini diperlukan untuk IPv4+IPv6 dan layanan yang dihosting di pusat data redundan. OkHttp mendukung fitur TLS modern (TLS 1.3, ALPN, penyematan sertifikat). Ini dapat dikonfigurasi untuk digunakan kembali untuk konektivitas yang luas.
Menggunakan OkHttp itu mudah. API permintaan/responsnya dirancang dengan pembuat yang lancar dan kekekalan. Ini mendukung panggilan pemblokiran sinkron dan panggilan asinkron dengan panggilan balik.
OkHttp mengikuti spesifikasi HTTP modern seperti
Jika spesifikasinya ambigu, OkHttp mengikuti agen pengguna modern seperti Browser populer atau Perpustakaan HTTP umum.
OkHttp berprinsip dan menghindari konfigurasi yang berlebihan, terutama ketika konfigurasi tersebut bertujuan untuk mengatasi server yang bermasalah, menguji skenario yang tidak valid, atau yang bertentangan dengan RFC yang relevan. Ada pustaka HTTP lain yang mengisi celah tersebut sehingga memungkinkan penyesuaian ekstensif termasuk permintaan yang berpotensi tidak valid.
Contoh Keterbatasan
Program ini mengunduh URL dan mencetak isinya sebagai string. Sumber lengkap.
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 ();
}
}
Program ini memposting data ke layanan. Sumber lengkap.
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 ();
}
}
Contoh lebih lanjut ada di halaman Resep OkHttp.
OkHttp berfungsi di Android 5.0+ (API level 21+) dan Java 8+.
OkHttp bergantung pada Okio untuk I/O berperforma tinggi dan pustaka standar Kotlin. Keduanya adalah perpustakaan kecil dengan kompatibilitas ke belakang yang kuat.
Kami sangat menyarankan Anda untuk terus memperbarui OkHttp. Seperti halnya browser web yang memperbarui secara otomatis, tetap menggunakan klien HTTPS merupakan pertahanan penting terhadap potensi masalah keamanan. Kami melacak ekosistem TLS yang dinamis dan menyesuaikan OkHttp untuk meningkatkan konektivitas dan keamanan.
OkHttp menggunakan implementasi TLS bawaan platform Anda. Pada platform Java, OkHttp juga mendukung Conscrypt, yang mengintegrasikan BoringSSL dengan Java. OkHttp akan menggunakan Conscrypt jika merupakan penyedia keamanan pertama:
Security . insertProviderAt ( Conscrypt . newProvider (), 1 );
Cabang OkHttp 3.12.x
mendukung Android 2.3+ (API level 9+) dan Java 7+. Platform ini tidak mendukung TLS 1.2 dan tidak boleh digunakan.
Log perubahan kami memiliki riwayat rilis.
Rilis terbaru tersedia di Maven Central.
implementation( " com.squareup.okhttp3:okhttp:4.12.0 " )
Pembuatan snapshot tersedia. Aturan R8 dan ProGuard tersedia.
Selain itu, kami memiliki bill of material (BOM) yang tersedia untuk membantu Anda selalu memperbarui artefak OkHttp dan memastikan kompatibilitas versi.
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 menyertakan perpustakaan untuk menguji klien HTTP, HTTPS, dan HTTP/2.
Rilis terbaru tersedia di Maven Central.
testImplementation( " com.squareup.okhttp3:mockwebserver:4.12.0 " )
MockWebServer digunakan pertama-tama untuk pengujian internal, dan untuk pengujian dasar aplikasi menggunakan klien OkHttp. Ini bukan perpustakaan pengujian HTTP berfitur lengkap yang dikembangkan secara mandiri. Itu tidak sedang dikembangkan secara aktif untuk fitur-fitur baru. Dengan demikian, kebutuhan Anda mungkin melebihi MockWebServer dan Anda dapat menggunakan perpustakaan pengujian berfitur lengkap seperti MockServer.
Membangun gambar asli Anda dengan Graal https://www.graalvm.org/ akan bekerja secara otomatis. Saat ini versi ini belum dirilis secara final, jadi sebaiknya gunakan versi 5.0.0-alpha.2
. Silakan laporkan bug atau solusi apa pun yang Anda temukan.
Lihat modul okcurl untuk contoh build.
$ ./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.