

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

# Konfigurasi klien HTTP
<a name="http-client-config"></a>

Secara default, AWS SDK untuk Kotlin menggunakan klien HTTP berdasarkan [OkHttp](https://square.github.io/okhttp). Anda dapat mengganti klien HTTP dan konfigurasinya dengan menyediakan klien yang dikonfigurasi secara eksplisit.

**Awas**  
Terlepas dari mesin HTTP mana yang Anda gunakan, dependensi lain dalam proyek Anda mungkin memiliki dependensi transitif yang bertentangan dengan versi mesin tertentu yang diperlukan oleh SDK. Secara khusus, kerangka kerja seperti Spring Boot diketahui mengelola dependensi seperti OkHttp dan mengandalkan versi yang lebih lama daripada SDK. Silakan lihat [Bagaimana cara mengatasi konflik ketergantungan?](ts-faq-dep-conflict-resolution.md) untuk informasi lebih lanjut.

**catatan**  
Secara default, setiap klien layanan menggunakan salinan sendiri dari klien HTTP. Jika Anda menggunakan beberapa layanan dalam aplikasi Anda, Anda mungkin ingin membangun satu klien HTTP dan membagikannya di semua klien layanan.

## Konfigurasi dasar
<a name="basic-http-confg"></a>

Saat Anda mengkonfigurasi klien layanan, Anda dapat mengonfigurasi jenis mesin default. SDK mengelola mesin klien HTTP yang dihasilkan dan secara otomatis menutupnya ketika tidak lagi diperlukan.

Contoh berikut menunjukkan konfigurasi klien HTTP selama inisialisasi klien DynamoDB.

### Impor
<a name="basic-config-ex-imports"></a>

```
import aws.sdk.kotlin.services.dynamodb.DynamoDbClient
import kotlin.time.Duration.Companion.seconds
```

### Kode
<a name="basic-config-ex-code"></a>

```
DynamoDbClient {
    region = "us-east-2"
    httpClient {
        maxConcurrency = 64u
        connectTimeout = 10.seconds
    }
}.use { ddb ->

    // Perform some actions with Amazon DynamoDB.
}
```

## Konfigurasi lanjutan
<a name="advanced-http-config"></a>

Konfigurasi HTTP default cocok untuk sebagian besar kasus penggunaan. Untuk beberapa kasus penggunaan lanjutan, seperti lingkungan throughput tinggi, opsi konfigurasi lanjutan berikut menyediakan fitur dan kemampuan tambahan: 

### Tentukan tipe mesin HTTP
<a name="http-config-engine"></a>

Untuk menentukan tipe mesin HTTP non-default, atau untuk menyesuaikan konfigurasi yang spesifik untuk jenis mesin HTTP tertentu, Anda dapat meneruskan parameter tambahan `httpClient` yang menentukan jenis mesin. 

Contoh berikut menentukan [https://docs.aws.amazon.com/smithy-kotlin/api/latest/http-client-engine-okhttp/aws.smithy.kotlin.runtime.http.engine.okhttp/-ok-http-engine/index.html](https://docs.aws.amazon.com/smithy-kotlin/api/latest/http-client-engine-okhttp/aws.smithy.kotlin.runtime.http.engine.okhttp/-ok-http-engine/index.html)yang dapat Anda gunakan untuk mengkonfigurasi [https://docs.aws.amazon.com/smithy-kotlin/api/latest/http-client-engine-okhttp/aws.smithy.kotlin.runtime.http.engine.okhttp/-ok-http-engine-config/index.html](https://docs.aws.amazon.com/smithy-kotlin/api/latest/http-client-engine-okhttp/aws.smithy.kotlin.runtime.http.engine.okhttp/-ok-http-engine-config/index.html)properti.

#### Impor
<a name="http-config-specify-engine-imports"></a>

```
import aws.sdk.kotlin.services.dynamodb.DynamoDbClient
import aws.smithy.kotlin.runtime.http.engine.okhttp.OkHttpEngine
```

#### Kode
<a name="http-config-specify-engine-code"></a>

```
DynamoDbClient {
    region = "us-east-2"
    httpClient(OkHttpEngine) {  // The first parameter specifies the HTTP engine type.
        // The following parameter is generic HTTP configuration available in any engine type.
        maxConcurrency = 64u

            // The following parameter is OkHttp-specific configuration.
        maxConcurrencyPerHost = 32u
    }
}.use { ddb ->

    // Perform some actions with Amazon DynamoDB.
}
```

Nilai yang mungkin untuk jenis mesin adalah`OkHttpEngine`, [https://docs.aws.amazon.com/smithy-kotlin/api/latest/http-client-engine-okhttp4/aws.smithy.kotlin.runtime.http.engine.okhttp4/-ok-http4-engine/index.html](https://docs.aws.amazon.com/smithy-kotlin/api/latest/http-client-engine-okhttp4/aws.smithy.kotlin.runtime.http.engine.okhttp4/-ok-http4-engine/index.html), dan [https://docs.aws.amazon.com/smithy-kotlin/api/latest/http-client-engine-crt/aws.smithy.kotlin.runtime.http.engine.crt/-crt-http-engine/index.html](https://docs.aws.amazon.com/smithy-kotlin/api/latest/http-client-engine-crt/aws.smithy.kotlin.runtime.http.engine.crt/-crt-http-engine/index.html). 

Untuk menggunakan parameter konfigurasi khusus untuk mesin HTTP, Anda harus menambahkan mesin sebagai dependensi waktu kompilasi. Untuk`OkHttpEngine`, Anda menambahkan dependensi berikut menggunakan Gradle.

(Anda dapat menavigasi ke {{X.Y.Z}} tautan untuk melihat versi terbaru yang tersedia.)

```
implementation(platform("aws.smithy.kotlin:bom:[https://github.com/smithy-lang/smithy-kotlin/releases/latest](https://github.com/smithy-lang/smithy-kotlin/releases/latest)"))
implementation("aws.smithy.kotlin:http-client-engine-okhttp")
```

Untuk`CrtHttpEngine`, tambahkan dependensi berikut.

```
implementation(platform("aws.smithy.kotlin:bom:[https://github.com/smithy-lang/smithy-kotlin/releases/latest](https://github.com/smithy-lang/smithy-kotlin/releases/latest)"))
implementation("aws.smithy.kotlin:http-client-engine-crt")
```

#### Gunakan `OkHttp4Engine`
<a name="http-config-okhttp4engine"></a>

Gunakan `OkHttp4Engine` jika Anda tidak dapat menggunakan default`OkHttpEngine`. [ GitHub Repositori smithy-kotlin](https://github.com/smithy-lang/smithy-kotlin/tree/main/runtime/protocol/http-client-engines/http-client-engine-okhttp4) memiliki informasi tentang cara Anda mengonfigurasi dan menggunakan. `OkHttp4Engine`

#### Gunakan klien HTTP eksplisit
<a name="http-client-explicit-usage"></a>

Saat Anda menggunakan klien HTTP eksplisit, Anda bertanggung jawab atas masa pakainya, termasuk menutup saat Anda tidak lagi membutuhkannya. Klien HTTP harus hidup setidaknya selama klien layanan apa pun yang menggunakannya.

Contoh kode berikut menunjukkan kode yang membuat klien HTTP tetap hidup saat aktif. `DynamoDbClient` [https://docs.aws.amazon.com/smithy-kotlin/api/latest/runtime-core/aws.smithy.kotlin.runtime.io/use.html](https://docs.aws.amazon.com/smithy-kotlin/api/latest/runtime-core/aws.smithy.kotlin.runtime.io/use.html)Fungsi ini memastikan klien HTTP menutup dengan benar.

##### Impor
<a name="http-client-explicit-usage-ex-imports"></a>

```
import aws.sdk.kotlin.services.dynamodb.DynamoDbClient
import aws.smithy.kotlin.runtime.http.engine.okhttp.OkHttpEngine
import kotlin.time.Duration.Companion.seconds
```

##### Kode
<a name="http-client-explicit-usage-ex-code"></a>

```
OkHttpEngine {
    maxConcurrency = 64u
    connectTimeout = 10.seconds
}.use { okHttpClient ->

     DynamoDbClient {
        region = "us-east-2"
        httpClient = okHttpClient
    }.use { ddb ->
        {
            // Perform some actions with Amazon DynamoDB.
        }
    }
}
```

### Pemantauan koneksi idle
<a name="http-idle-connection-monitoring"></a>

**penting**  
 Fitur polling idle koneksi OkHttp engine ([https://docs.aws.amazon.com/smithy-kotlin/api/latest/http-client-engine-okhttp/aws.smithy.kotlin.runtime.http.engine.okhttp/-ok-http-engine-config/connection-idle-polling-interval.html](https://docs.aws.amazon.com/smithy-kotlin/api/latest/http-client-engine-okhttp/aws.smithy.kotlin.runtime.http.engine.okhttp/-ok-http-engine-config/connection-idle-polling-interval.html)) telah digantikan oleh percobaan ulang kegagalan koneksi otomatis (). [https://docs.aws.amazon.com/smithy-kotlin/api/latest/http-client-engine-okhttp/aws.smithy.kotlin.runtime.http.engine.okhttp/-ok-http-engine-config/retry-on-connection-failure.html](https://docs.aws.amazon.com/smithy-kotlin/api/latest/http-client-engine-okhttp/aws.smithy.kotlin.runtime.http.engine.okhttp/-ok-http-engine-config/retry-on-connection-failure.html) ****Polling siaga koneksi akan **ditinggalkan** di SDK versi **v1.7 dan akan dihapus dalam SDK versi v1.8**.**** Lihat [posting GitHub Diskusi terkait](https://github.com/aws/aws-sdk-kotlin/discussions/1797) untuk lebih jelasnya. 

[https://docs.aws.amazon.com/smithy-kotlin/api/latest/http-client-engine-okhttp/aws.smithy.kotlin.runtime.http.engine.okhttp/-ok-http-engine/](https://docs.aws.amazon.com/smithy-kotlin/api/latest/http-client-engine-okhttp/aws.smithy.kotlin.runtime.http.engine.okhttp/-ok-http-engine/)menyediakan opsi [https://docs.aws.amazon.com/smithy-kotlin/api/latest/http-client-engine-okhttp/aws.smithy.kotlin.runtime.http.engine.okhttp/-ok-http-engine-config/connection-idle-polling-interval.html](https://docs.aws.amazon.com/smithy-kotlin/api/latest/http-client-engine-okhttp/aws.smithy.kotlin.runtime.http.engine.okhttp/-ok-http-engine-config/connection-idle-polling-interval.html)konfigurasi untuk memantau koneksi idle untuk penutupan jarak jauh. Fitur ini mendeteksi ketika layanan memiliki koneksi tertutup yang masih dalam kumpulan koneksi, mencegah kesalahan pada permintaan berikutnya. 

Ketika `connectionIdlePollingInterval` diatur ke nilai non-null, mesin polling koneksi yang dilepaskan kembali ke kumpulan koneksi. Proses polling melakukan pemblokiran pembacaan dengan batas waktu soket diatur ke interval yang ditentukan. Polling secara otomatis dibatalkan ketika mesin memperoleh koneksi dari kolam atau ketika koneksi diusir dan ditutup. 

Ketika nilai ini `null` (default), polling dinonaktifkan. Koneksi idle di kolam yang ditutup dari jarak jauh mungkin mengalami kesalahan saat diperoleh untuk panggilan berikutnya.

**catatan**  
 Karena polling loop menggunakan pemblokiran pembacaan, panggilan mesin untuk memperoleh atau menutup koneksi mungkin tertunda sebanyak `connectionIdlePollingInterval` interval. Memilih nilai rendah untuk interval berarti SDK akan memperoleh koneksi lebih cepat, dengan mengorbankan penggunaan sumber daya idle yang lebih tinggi. 

#### Impor
<a name="http-idle-connection-ex-imports"></a>

```
import aws.sdk.kotlin.services.s3.S3Client
import aws.smithy.kotlin.runtime.http.engine.okhttp.OkHttpEngine
import kotlin.time.Duration.Companion.milliseconds
```

#### Kode
<a name="http-idle-connection-ex-code"></a>

```
S3Client.fromEnvironment {
    httpEngine(OkHttpEngine) {
        connectionIdlePollingInterval = 50.milliseconds
    }
}.use { s3 -> 
  // Use the Amazon S3 client
}
```