Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Konfigurasikan klien Apache-based HTTP
catatan
ApacheHttpClienttidak digunakan lagi karena Apache HttpClient 4.x dalam mode pemeliharaan. Gunakan berbasis Apache5HttpClient Apache HttpClient 5.x.
SDK ApacheHttpClient didasarkan pada Apache HttpClient 4.x
SDK juga menawarkan UrlConnectionHttpClientUrlConnectionHttpClient, lihatKonfigurasikan klien HTTP URLConnection berbasis.
Untuk melihat set lengkap opsi konfigurasi yang tersedia untuk AndaApacheHttpClient, lihat ApacheHttpClient.Builder
Akses ApacheHttpClient
Konfigurasi diperlukan
Untuk menggunakanApacheHttpClient, Anda perlu menambahkan ketergantungan pada apache-client perpustakaan pada waktu kompilasi.
Lihat contoh berikut dari pom.xml file Maven untuk mengkonfigurasiApacheHttpClient.
<dependencyManagement> <dependencies> <dependency> <groupId>software.amazon.awssdk</groupId> <artifactId>bom</artifactId> <version>2.54.0</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement> <dependencies> <dependency> <groupId>software.amazon.awssdk</groupId> <artifactId>s3</artifactId> </dependency> <!-- By adding the apache-client dependency, ApacheHttpClient will be added to the compile classpath so you can configure it. --> <dependency> <groupId>software.amazon.awssdk</groupId> <artifactId>apache-client</artifactId> </dependency> </dependencies>
Gunakan dan konfigurasikan ApacheHttpClient
Anda dapat mengonfigurasi instance ApacheHttpClient bersama dengan membangun klien layanan, atau Anda dapat mengonfigurasi satu instance untuk berbagi di beberapa klien layanan.
Dengan kedua pendekatan, Anda menggunakan ApacheHttpClient.Builder untuk mengkonfigurasi properti untuk klien Apache-based HTTP.
Praktik terbaik: mendedikasikan ApacheHttpClient instance untuk klien layanan
Jika Anda perlu mengonfigurasi instanceApacheHttpClient, kami sarankan Anda membangun ApacheHttpClient instance khusus. Anda dapat melakukannya dengan menggunakan httpClientBuilder metode pembangun klien layanan. Dengan cara ini, siklus hidup klien HTTP dikelola oleh SDK, yang membantu menghindari potensi kebocoran memori jika ApacheHttpClient instance tidak ditutup saat tidak lagi diperlukan.
Contoh berikut membuat S3Client dan mengonfigurasi instance tertanam ApacheHttpClient dengan maxConnections dan connectionTimeout nilai. Instance HTTP dibuat menggunakan httpClientBuilder metodeS3Client.Builder.
Impor
import software.amazon.awssdk.http.apache.ApacheHttpClient; import software.amazon.awssdk.services.s3.S3Client; import java.time.Duration;
Kode
S3Client s3Client = S3Client // Singleton: Use the s3Client for all requests. .builder() .httpClientBuilder(ApacheHttpClient.builder() .maxConnections(100) .connectionTimeout(Duration.ofSeconds(5)) ).build(); // Perform work with the s3Client. s3Client.close(); // Requests completed: Close all service clients.
Pendekatan alternatif: bagikan ApacheHttpClient contoh
Untuk membantu menjaga penggunaan sumber daya dan memori lebih rendah untuk aplikasi Anda, Anda dapat mengonfigurasi ApacheHttpClient dan membagikannya di beberapa klien layanan. Kumpulan koneksi HTTP akan dibagikan, yang menurunkan penggunaan sumber daya.
catatan
Saat ApacheHttpClient instance dibagikan, Anda harus menutupnya saat instans siap untuk dibuang. SDK tidak akan menutup instance saat klien layanan ditutup.
Contoh berikut mengkonfigurasi klien Apache-based HTTP yang digunakan oleh dua klien layanan. ApacheHttpClientInstance yang dikonfigurasi diteruskan ke httpClient metode masing-masing builder. Ketika klien layanan dan klien HTTP tidak lagi diperlukan, kode secara eksplisit menutupnya. Kode menutup klien HTTP terakhir.
Impor
import software.amazon.awssdk.http.SdkHttpClient; import software.amazon.awssdk.http.apache.ApacheHttpClient; import software.amazon.awssdk.services.dynamodb.DynamoDbClient; import software.amazon.awssdk.services.s3.S3Client;
Kode
SdkHttpClient apacheHttpClient = ApacheHttpClient.builder() .maxConnections(100).build(); // Singletons: Use the s3Client and dynamoDbClient for all requests. S3Client s3Client = S3Client.builder() .httpClient(apacheHttpClient).build(); DynamoDbClient dynamoDbClient = DynamoDbClient.builder() .httpClient(apacheHttpClient).build(); // Perform work with the s3Client and dynamoDbClient. // Requests completed: Close all service clients. s3Client.close(); dynamoDbClient.close(); apacheHttpClient.close(); // Explicitly close apacheHttpClient.
Contoh konfigurasi proxy
Cuplikan kode berikut menggunakan pembuat konfigurasi proxy untuk klien
SdkHttpClient apacheHttpClient = ApacheHttpClient.builder() .proxyConfiguration(ProxyConfiguration.builder() .endpoint(URI.create("http://example.com:1234")) .username("username") .password("password") .addNonProxyHost("localhost") .addNonProxyHost("host.example.com") .build()) .build();
Properti sistem Java yang setara untuk konfigurasi proxy ditampilkan dalam cuplikan baris perintah berikut.
$ java -Dhttp.proxyHost=example.com -Dhttp.proxyPort=1234 -Dhttp.proxyUser=username \ -Dhttp.proxyPassword=password -Dhttp.nonProxyHosts=localhost|host.example.com -cp ... App
Pengaturan setara yang menggunakan variabel lingkungan adalah:
// Set the following environment variables. // $ export HTTP_PROXY="http://username:password@example.com:1234" // $ export NO_PROXY="localhost|host.example.com" // Set the 'useSystemPropertyValues' to false on the proxy configuration. SdkHttpClient apacheHttpClient = ApacheHttpClient.builder() .proxyConfiguration(ProxyConfiguration.builder() .useSystemPropertyValues(Boolean.FALSE) .build()) .build(); // Run the application. // $ java -cp ... App
catatan
Klien HTTP Apache saat ini tidak mendukung properti sistem proxy HTTPS atau variabel lingkungan HTTPS_PROXY.