Saya mengembangkan aplikasi menggunakan pustaka OkHttp dan masalah saya adalah saya tidak dapat menemukan cara mengatur batas waktu koneksi dan batas waktu soket.
OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder().url(url).build();
Response response = client.newCall(request).execute();
Jawaban:
Anda hanya perlu melakukan ini
Sadarilah bahwa nilai yang ditetapkan
setReadTimeout
adalah nilai yang digunakansetSoTimeout
padaSocket
internal di dalamOkHttp
Connection
kelas.Tidak mengatur batas waktu apa pun pada
OkHttpClient
adalah setara dengan menetapkan nilai0
aktifsetConnectTimeout
atausetReadTimeout
dan tidak akan menghasilkan batas waktu sama sekali. Deskripsi dapat ditemukan di sini .Seperti yang disebutkan oleh @marceloquinta dalam komentar
setWriteTimeout
juga dapat diatur.Pada versi 2.5.0 nilai batas waktu baca / tulis / hubungkan diatur ke 10 detik secara default seperti yang disebutkan oleh @ChristerNordvik. Ini bisa dilihat di sini .
Pada OkHttp3 sekarang dapat melakukan ini melalui Builder seperti itu
Anda juga dapat melihat resepnya di sini .
sumber
Untuk okhttp3 ini telah sedikit berubah.
Sekarang Anda mengatur waktu menggunakan pembangun, dan bukan setter, seperti ini:
Info lebih lanjut dapat ditemukan di wiki mereka: https://github.com/square/okhttp/blob/b3dcb9b1871325248fba917458658628c44ce8a3/docs/recipes.md#timeouts-kt-java
sumber
Untuk retrofit retrofit: 2.0.0-beta4 kodenya sebagai berikut
sumber
Untuk Retrofit 2.0.0-beta1 atau beta2, kodenya seperti berikut
sumber
sumber
Sudah berubah sekarang. Ganti
.Builder()
dengan.newBuilder()
Pada okhttp: 3.9.0 kode berjalan sebagai berikut:
sumber
versi okhttp:
3.11.0
atau lebih tinggidari kode sumber okhttp
unit
dapat berupa nilai di bawah inicontoh kode
Diperbarui
Saya telah menambahkan api baru ke okhttp dari versi
3.12.0
, Anda dapat mengatur batas waktu seperti ini:CATATAN: Ini membutuhkan API 26+ jadi jika Anda mendukung versi Android yang lebih lama, terus gunakan
(5, TimeUnit.SECONDS)
.sumber
seperti itu:
sumber
ini berhasil untuk saya ... dari https://github.com/square/okhttp/issues/3553
sumber
Jika Anda ingin menyesuaikan konfigurasi maka gunakan metodologi di bawah ini untuk membuat OKhttpclient terlebih dahulu dan kemudian tambahkan builder di atasnya.
sumber
Anda dapat mengatur batas waktu panggilan untuk mencakup seluruh siklus dari menyelesaikan DNS, menghubungkan, menulis isi permintaan, memproses server, dan membaca isi tanggapan.
sumber