Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Artikel ini memberikan gambaran umum tentang cara mengonfigurasi Azure SDK for Java untuk memanfaatkan proksi yang tepat.
Konfigurasi proksi HTTP
Pustaka klien Azure untuk Java menawarkan berbagai cara untuk mengonfigurasi proksi untuk HttpClient.
Setiap metode penyediaan proksi memiliki pro dan kontra sendiri dan menyediakan tingkat enkapulasi yang berbeda. Ketika Anda telah mengonfigurasi proksi untuk HttpClient, maka HttpClient akan menggunakan proksi tersebut selama sisa masa hidupnya. Memiliki proksi yang terkait dengan individu HttpClient memungkinkan aplikasi untuk menggunakan beberapa HttpClient instans di mana masing-masing dapat menggunakan proksi yang berbeda untuk memenuhi persyaratan proksi aplikasi.
Opsi konfigurasi proksi adalah:
Menggunakan proksi lingkungan
Secara default, penyusun klien HTTP akan memeriksa lingkungan untuk konfigurasi proksi. Proses ini menggunakan Azure SDK untuk API Java Configuration . Saat pembangun membuat klien, itu dikonfigurasi dengan salinan 'konfigurasi global' yang diambil dengan memanggil Configuration.getGlobalConfiguration(). Panggilan ini akan membaca konfigurasi proksi HTTP apa pun dari lingkungan sistem.
Ketika penyusun memeriksa lingkungan, penyusun akan mencari konfigurasi lingkungan berikut dalam urutan yang ditentukan:
HTTPS_PROXYHTTP_PROXYhttps.proxy*http.proxy*
* mewakili properti proksi Java yang terkenal. Untuk informasi selengkapnya, lihat Jaringan dan Proksi Java dalam dokumentasi Oracle.
Jika penyusun menemukan salah satu konfigurasi lingkungan, builder akan membuat instans ProxyOptions dengan memanggil ProxyOptions.fromConfiguration(Configuration.getGlobalConfiguration()). Artikel ini menyediakan detail lebih lanjut tentang jenis ProxyOptions di bawah ini.
Penting
Untuk menggunakan HTTPS_PROXY atau HTTP_PROXY, Java secara implisit mengharuskan Anda mengatur properti java.net.useSystemProxies lingkungan sistem ke true.
Anda juga dapat membuat instans klien HTTP yang tidak menggunakan konfigurasi proksi apa pun yang ada di variabel lingkungan sistem. Untuk mengubah perilaku bawaan, Anda harus secara eksplisit menetapkan Configuration dengan konfigurasi yang berbeda di penyusun klien HTTP. Ketika Anda mengatur Configuration di pembangun, itu tidak akan lagi memanggil Configuration.getGlobalConfiguration(). Misalnya, jika Anda memanggil configuration(Configuration) menggunakan Configuration.NONE, Anda dapat secara eksplisit mencegah penyusun memeriksa lingkungan untuk konfigurasi.
Contoh berikut menggunakan HTTP_PROXY variabel lingkungan dengan nilai localhost:8888 untuk menggunakan Fiddler sebagai proksi. Kode ini menunjukkan pembuatan Netty dan klien HTTP OkHttp. (Untuk informasi selengkapnya tentang konfigurasi klien HTTP, lihat klien HTTP dan alur.)
export HTTP_PROXY=localhost:8888
HttpClient nettyHttpClient = new NettyAsyncHttpClientBuilder().build();
HttpClient okhttpHttpClient = new OkHttpAsyncHttpClientBuilder().build();
Untuk mencegah proksi lingkungan digunakan, konfigurasikan penyusun klien HTTP dengan Configuration.NONE, seperti yang ditunjukkan dalam contoh berikut:
HttpClient nettyHttpClient = new NettyAsyncHttpClientBuilder()
.configuration(Configuration.NONE)
.build();
HttpClient okhttpHttpClient = new OkHttpAsyncHttpClientBuilder()
.configuration(Configuration.NONE)
.build();
Menggunakan proksi konfigurasi
Daripada membaca dari lingkungan, Anda dapat mengonfigurasi pembangun klien HTTP untuk menggunakan Configuration khusus dengan pengaturan proksi yang sama seperti yang sudah diterima dari lingkungan. Konfigurasi ini menawarkan kemampuan untuk memiliki konfigurasi yang dapat digunakan kembali yang dibatasi pada kasus penggunaan tertentu. Ketika pembangun klien HTTP sedang membangun HttpClient, itu akan menggunakan ProxyOptions yang dikembalikan dari ProxyOptions.fromConfiguration(<Configuration passed into the builder>).
Contoh berikut menggunakan konfigurasi yang diatur dalam objek http.proxy* untuk menggunakan proksi yang mengautentikasi Fiddler sebagai proksi.
Configuration configuration = new ConfigurationBuilder()
.putProperty("http.proxyHost", "localhost")
.putProperty("http.proxyPort", "8888")
.putProperty("http.proxyUser", "1")
.putProperty("http.proxyPassword", "1")
.build();
HttpClient nettyHttpClient = new NettyAsyncHttpClientBuilder()
.configuration(configuration)
.build();
HttpClient okhttpHttpClient = new OkHttpAsyncHttpClientBuilder()
.configuration(configuration)
.build();
Menggunakan proksi eksplisit
Pustaka klien Java dikirimkan bersama kelas ProxyOptions yang berfungsi sebagai jenis pustaka klien Azure untuk mengonfigurasi proxy. Anda dapat mengonfigurasi ProxyOptions dengan protokol jaringan yang digunakan untuk mengirim permintaan proksi, alamat proksi, kredensial autentikasi proksi, dan host non-proksi. Hanya protokol jaringan proksi dan alamat proksi yang diperlukan. Saat menggunakan kredensial autentikasi, Anda harus mengatur nama pengguna dan kata sandi.
Contoh berikut membuat instance sederhana ProxyOptions yang memproksikan permintaan ke alamat Fiddler default (localhost:8888):
ProxyOptions proxyOptions = new ProxyOptions(ProxyOptions.Type.HTTP, new InetSocketAddress("localhost", 8888));
Contoh berikut membuat sebuah proksi yang diautentikasi ProxyOptions untuk meneruskan permintaan ke instans Fiddler yang memerlukan autentikasi proksi.
// Fiddler uses username "1" and password "1" with basic authentication as its proxy authentication requirement.
ProxyOptions proxyOptions = new ProxyOptions(ProxyOptions.Type.HTTP, new InetSocketAddress("localhost", 8888))
.setCredentials("1", "1");
Anda dapat mengatur penyusun klien HTTP dengan ProxyOptions secara langsung untuk menunjukkan proksi eksplisit yang akan digunakan. Konfigurasi ini adalah cara paling terperinci untuk menyediakan proxy, dan umumnya tidak sefleksibel melewatkan Configuration yang dapat Anda mutasi untuk memperbarui persyaratan proxy.
Contoh berikut menggunakan ProxyOptions untuk menggunakan Fiddler sebagai proksi:
ProxyOptions proxyOptions = new ProxyOptions(ProxyOptions.Type.HTTP, new InetSocketAddress("localhost", 8888));
HttpClient nettyHttpClient = new NettyAsyncHttpClientBuilder()
.proxy(proxyOptions)
.build();
HttpClient okhttpHttpClient = new OkHttpAsyncHttpClientBuilder()
.proxy(proxyOptions)
.build();
Langkah selanjutnya
Sekarang setelah Anda terbiasa dengan konfigurasi proksi di Azure SDK for Java, lihat Mengonfigurasi pelacakan di Azure SDK untuk Java untuk lebih memahami alur dalam aplikasi Anda, dan untuk membantu mendiagnosis masalah.