Galat proxy HttpClient 4: protokol http tidak didukung
Pertahankan pabrik HTTP biasa di registri Apache HttpClient 4 khusus saat rute HTTPS pertama kali terhubung ke proxy HTTP.
Dalam aplikasi Apache HttpClient 4, tujuan HTTPS bukan berarti setiap koneksi dimulai dengan TLS. Proxy HTTP biasa dicapai melalui koneksi tanpa enkripsi sebelum CONNECT membuka terowongan dan TLS dilapiskan menuju tujuan.
Jika manajer koneksi khusus hanya mendaftarkan https, lompatan proxy pertama dapat gagal dengan UnsupportedSchemeException: http protocol is not supported.
Untuk API 4.5, sertakan kedua pabrik saat membangun manajer tersebut:
var registry = RegistryBuilder.<ConnectionSocketFactory>create()
.register("http", PlainConnectionSocketFactory.getSocketFactory())
.register("https", tlsFactory)
.build();
var manager = new PoolingHttpClientConnectionManager(registry);
var client = HttpClients.custom()
.setConnectionManager(manager)
.setProxy(new HttpHost("proxy.example.net", 8080, "http"))
.build();
tlsFactory adalah SSLConnectionSocketFactory yang sudah ada pada aplikasi, dengan verifikasi kepercayaan dan nama host yang dimaksudkan. Tipe yang ditampilkan termasuk paket org.apache.http Apache 4. Cuplikan mengasumsikan inferensi tipe variabel lokal Java; kode Java lama dapat memakai tipe eksplisit.
Pasang manajer yang diperbaiki ke klien yang benar-benar dipakai untuk permintaan. Untuk permintaan HTTPS publik yang diizinkan tanpa autentikasi proxy, entri HTTP dari daftar proxy HTTP dapat mengisi alamat proxy HttpHost. Mengonfigurasi builder lain tidak memperbarui klien yang sudah dibuat.
Periksa juga kepemilikan builder: HttpClientBuilder mendokumentasikan bahwa manajer koneksi yang diberikan secara eksplisit dapat menimpa masukan konfigurasi SSL terpisahnya. Letakkan pabrik yang diperlukan di registri manajer alih-alih menganggap panggilan setSSLContext nanti akan mengganti bagian dalamnya.
Diagnosis ini menyangkut registri skema lokal. Tantangan autentikasi proxy atau tujuan yang ditolak adalah hasil yang lebih akhir dan berbeda. Pertahankan kedua pendaftaran pabrik saat menyelidiki respons tersebut.