

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

# HTTP-Client-Konfiguration
<a name="http-client-config"></a>

Standardmäßig AWS SDK für Kotlin verwendet der einen HTTP-Client, der auf basiert [OkHttp](https://square.github.io/okhttp). Sie können den HTTP-Client und seine Konfiguration überschreiben, indem Sie einen explizit konfigurierten Client angeben.

**Warnung**  
Unabhängig davon, welche HTTP-Engine Sie verwenden, können andere Abhängigkeiten in Ihrem Projekt transitive Abhängigkeiten aufweisen, die mit der spezifischen Engine-Version in Konflikt stehen, die für das SDK erforderlich ist. Insbesondere Frameworks wie Spring Boot sind dafür bekannt, Abhängigkeiten wie das SDK zu verwalten OkHttp und sich auf ältere Versionen als das SDK zu verlassen. Weitere Informationen [Wie löse ich Abhängigkeitskonflikte?](ts-faq-dep-conflict-resolution.md) finden Sie unter.

**Anmerkung**  
Standardmäßig verwendet jeder Service-Client seine eigene Kopie eines HTTP-Clients. Wenn Sie in Ihrer Anwendung mehrere Dienste verwenden, möchten Sie möglicherweise einen einzelnen HTTP-Client erstellen und ihn für alle Dienstclients gemeinsam nutzen.

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

Wenn Sie einen Service-Client konfigurieren, können Sie den Standard-Engine-Typ konfigurieren. Das SDK verwaltet die resultierende HTTP-Client-Engine und schließt sie automatisch, wenn sie nicht mehr benötigt wird.

Das folgende Beispiel zeigt die Konfiguration eines HTTP-Clients während der Initialisierung eines DynamoDB-Clients.

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

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

### Code
<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.
}
```

## Erweiterte Konfiguration
<a name="advanced-http-config"></a>

Die Standard-HTTP-Konfiguration ist für die meisten Anwendungsfälle geeignet. Für einige erweiterte Anwendungsfälle, wie z. B. Umgebungen mit hohem Durchsatz, bieten die folgenden erweiterten Konfigurationsoptionen zusätzliche Funktionen und Möglichkeiten: 

### Geben Sie einen HTTP-Engine-Typ an
<a name="http-config-engine"></a>

Um einen nicht standardmäßigen HTTP-Engine-Typ anzugeben oder um die Konfiguration anzupassen, die für einen bestimmten HTTP-Engine-Typ spezifisch ist, können Sie einen zusätzlichen Parameter übergeben, der den Engine-Typ `httpClient` angibt. 

Das folgende Beispiel gibt den an [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), den Sie zur Konfiguration der [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)Eigenschaft verwenden können.

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

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

#### Code
<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.
}
```

Die möglichen Werte für den Motortyp sind `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), und [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). 

Um für eine HTTP-Engine spezifische Konfigurationsparameter zu verwenden, müssen Sie die Engine als Abhängigkeit zur Kompilierzeit hinzufügen. Für die `OkHttpEngine` fügen Sie mit Gradle die folgende Abhängigkeit hinzu.

(Sie können zum *X.Y.Z* Link navigieren, um die neueste verfügbare Version zu sehen.)

```
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")
```

Fügen Sie für `CrtHttpEngine` die die folgende Abhängigkeit hinzu.

```
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")
```

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

Verwenden Sie die`OkHttp4Engine`, wenn Sie die Standardeinstellung nicht verwenden können`OkHttpEngine`. Das [ GitHub Smithy-Kotlin-Repository](https://github.com/smithy-lang/smithy-kotlin/tree/main/runtime/protocol/http-client-engines/http-client-engine-okhttp4) enthält Informationen darüber, wie Sie das konfigurieren und verwenden. `OkHttp4Engine`

#### Verwenden Sie einen expliziten HTTP-Client
<a name="http-client-explicit-usage"></a>

Wenn Sie einen expliziten HTTP-Client verwenden, sind Sie für dessen Lebensdauer verantwortlich, einschließlich dessen Schließung, wenn Sie ihn nicht mehr benötigen. Ein HTTP-Client muss mindestens so lange aktiv sein wie jeder Service-Client, der ihn verwendet.

Das folgende Codebeispiel zeigt Code, der dafür sorgt, dass der HTTP-Client aktiv bleibt, solange der aktiv `DynamoDbClient` ist. Die [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)Funktion stellt sicher, dass der HTTP-Client ordnungsgemäß geschlossen wird.

##### Importe
<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
```

##### Code
<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.
        }
    }
}
```

### Überwachung inaktiver Verbindungen
<a name="http-idle-connection-monitoring"></a>

**Wichtig**  
 Die Funktion zum Abrufen von Verbindungen im Leerlauf ([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)) der OkHttp Engine wurde durch automatische Wiederholungsversuche bei Verbindungsfehlern () ersetzt. [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) ****Das Abrufen inaktiver Verbindungen ist in SDK-Version **v1.7 **veraltet** und wird in SDK-Version v1.8 entfernt**.**** Weitere Informationen finden Sie [im entsprechenden GitHub Diskussionsbeitrag](https://github.com/aws/aws-sdk-kotlin/discussions/1797). 

[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/)bietet die [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)Konfigurationsoption zur Überwachung inaktiver Verbindungen im Hinblick auf das Schließen per Fernzugriff. Diese Funktion erkennt, wenn Dienste Verbindungen geschlossen haben, die sich noch im Verbindungspool befinden, und verhindert so Fehler bei nachfolgenden Anfragen. 

Wenn der Wert auf einen Wert ungleich Null gesetzt `connectionIdlePollingInterval` ist, fragt die Engine Verbindungen, die freigegeben wurden, zurück zum Verbindungspool. Bei der Abfrage werden Lesevorgänge blockiert, wobei das Socket-Timeout auf das angegebene Intervall eingestellt ist. Die Abfrage wird automatisch abgebrochen, wenn die Engine die Verbindung aus dem Pool bezieht oder wenn die Verbindung gelöscht und geschlossen wird. 

Wenn dieser Wert `null` (Standard) ist, ist die Abfrage deaktiviert. Bei inaktiven Verbindungen im Pool, die remote geschlossen wurden, können Fehler auftreten, wenn sie für nachfolgende Aufrufe abgerufen werden.

**Anmerkung**  
 Da die Abfrageschleife blockierende Lesevorgänge verwendet, können Engine-Aufrufe zum Herstellen oder Schließen einer Verbindung um das `connectionIdlePollingInterval` Intervall verzögert werden. Wenn Sie für das Intervall einen niedrigen Wert wählen, nimmt das SDK schneller Verbindungen auf, allerdings auf Kosten einer höheren Ressourcenauslastung im Leerlauf. 

#### Importe
<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
```

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

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