Proxy menerima TCP tetapi tidak pernah menyelesaikan balasan CONNECT. Respons situs web belum dimulai; batas waktu yang hanya menyasar respons berikutnya itu dapat membiarkan penyiapan ini menunggu tanpa batas.

Untuk Apache HttpClient 5.3.1, atur nilai default pengelola koneksi:

var connection = ConnectionConfig.custom()
    .setConnectTimeout(Timeout.ofSeconds(5))
    .setSocketTimeout(Timeout.ofSeconds(10))
    .build();

var manager = PoolingHttpClientConnectionManagerBuilder.create()
    .setDefaultConnectionConfig(connection)
    .build();

var client = HttpClients.custom()
    .setConnectionManager(manager)
    .setProxy(new HttpHost("http", "proxy.example", 8080))
    .build();

Gunakan kelas Apache HttpComponents 5 di bawah org.apache.hc, dengan Timeout di paket utilitas core5. Pertahankan klien untuk tugasnya dan tutup. Untuk uji HTTP publik yang terisolasi, kandidat dari daftar proxy HTTP menyediakan endpoint; jaga tujuan tetap stabil saat membandingkan batas waktu.

BatasPenantian yang ditangani
Batas waktu koneksiPembentukan koneksi
Batas waktu socketKetidakaktifan I/O default, termasuk pertukaran CONNECT
Pengambilan dari kumpulan / respons aplikasiTahap lain yang dikonfigurasi terpisah

Setelah CONNECT, TLS dapat memerlukan batas penyiapan sendiri melalui konfigurasi TLS HttpClient 5. Bedakan juga ketidakaktifan dari tenggat waktu total: byte yang terputus-putus atau pertukaran autentikasi berulang dapat memperpanjang waktu total. Gunakan kebijakan tenggat waktu atau pembatalan yang didukung aplikasi untuk satu anggaran untuk seluruh operasi.

Artikel terkait