

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 設定 Apache 5.x 型 HTTP 用戶端
<a name="http-configuration-apache5"></a>

## 存取 Apache5HttpClient
<a name="http-apache-5-dependency"></a>

若要使用 `Apache5HttpClient`，您必須在 上新增相依性，**apache5-client**並在您的服務用戶端`Apache5HttpClient`上明確設定 。

```
<dependencyManagement>
   <dependencies>
        <dependency>
            <groupId>software.amazon.awssdk</groupId>
            <artifactId>bom</artifactId>
            <version>2.41.0*</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>

<dependencies>
    <dependency>
        <groupId>software.amazon.awssdk</groupId>
        <artifactId>s3</artifactId>
    </dependency>
    
    <dependency>
        <groupId>software.amazon.awssdk</groupId>
        <artifactId>apache5-client</artifactId>
    </dependency>
</dependencies>
```

\$1將紅色顯示的版本取代為您要使用的 Java 開發套件版本。尋找 [Maven Central](https://central.sonatype.com/artifact/software.amazon.awssdk/bom) 的最新資訊。

### 使用和設定 `Apache5HttpClient`
<a name="http-config-apache-5-config"></a>

您可以設定 執行個體`Apache5HttpClient`以及建置服務用戶端，也可以設定單一執行個體以在多個服務用戶端之間共用。

透過任一方法，您可以使用 [Apache5HttpClient.Builder](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/http/apache5/Apache5HttpClient.Builder.html) 來設定 Apache 5 型 HTTP 用戶端的屬性。

#### 最佳實務：將 Apache5HttpClient 執行個體專用於服務用戶端
<a name="http-apache5-dedicated-instance"></a>

如果您需要設定 的執行個體`Apache5HttpClient`，我們建議您建置專用`Apache5HttpClient`執行個體。您可以使用服務用戶端建置器的 httpClientBuilder 方法來執行此操作。如此一來，HTTP 用戶端的生命週期由 SDK 管理，這有助於避免在`Apache5HttpClient`執行個體不再需要時關閉時造成潛在的記憶體流失。

下列範例會建立 S3Client，並使用 `Apache5HttpClient` maxConnections 和 connectionTimeout 值設定 的內嵌執行個體。HTTP 執行個體是使用 的 `httpClientBuilder`方法建立。 `S3Client.Builder`

**匯入**

```
import software.amazon.awssdk.http.apache5.Apache5HttpClient;
import software.amazon.awssdk.services.s3.S3Client;
import java.time.Duration;
```

**Code**

```
S3Client s3Client = S3Client   // Singleton: Use the s3Client for all requests.
    .builder()
    .httpClientBuilder(Apache5HttpClient.builder()
        .maxConnections(100)
        .connectionTimeout(Duration.ofSeconds(5))
    )
    .build();

// Perform work with the s3Client.

s3Client.close();   // Requests completed: Close all service clients.
```

#### 替代方法：共用`Apache5HttpClient`執行個體
<a name="http-apache5-shared-instance"></a>

為了協助降低應用程式的資源和記憶體用量，您可以設定 ，`Apache5HttpClient`並在多個服務用戶端之間共用。HTTP 連線集區將共用，這會降低資源用量。

**注意**  
共用`Apache5HttpClient`執行個體時，您必須在準備好進行處置時將其關閉。當服務用戶端關閉時，軟體開發套件不會關閉執行個體。

下列範例會設定兩個服務用戶端所使用的 Apache 型 HTTP 用戶端。設定的`ApacheHttpClient`執行個體會傳遞至每個建置器的 httpClient 方法。當不再需要服務用戶端和 HTTP 用戶端時，程式碼會明確關閉它們。程式碼最後會關閉 HTTP 用戶端。

**匯入**

```
import software.amazon.awssdk.http.SdkHttpClient;
import software.amazon.awssdk.http.apache5.Apache5HttpClient;
import software.amazon.awssdk.services.dynamodb.DynamoDbClient;
import software.amazon.awssdk.services.s3.S3Client;
```

**Code**

```
SdkHttpClient apache5HttpClient = Apache5HttpClient.builder()
        .maxConnections(100).build();

// Singletons: Use the s3Client and dynamoDbClient for all requests.
S3Client s3Client = 
    S3Client.builder()
            .httpClient(apache5HttpClient).build();

DynamoDbClient dynamoDbClient = 
    DynamoDbClient.builder()
                  .httpClient(apache5HttpClient).build();

// Perform work with the s3Client and dynamoDbClient.

// Requests completed: Close all service clients.
s3Client.close();
dynamoDbClient.close();
apache5HttpClient.close();  // Explicitly close apache5HttpClient.
```