

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

# coreHTTP 交互身分驗證示範
<a name="core-http-ma-demo"></a>

**重要**  <a name="deprecation-message-demo"></a>
此示範託管在已棄用的 Amazon-FreeRTOS 儲存庫上。我們建議您在建立新專案時從[這裡開始](freertos-getting-started-modular.md)。如果您已經有以現在已棄用之 Amazon-FreeRTOS 儲存庫為基礎的現有 FreeRTOS 專案，請參閱 [Amazon-FreeRTOS Github 儲存庫遷移指南](github-repo-migration.md)。 FreeRTOS 

## 簡介
<a name="core-http-ma-demo-intro"></a>

coreHTTP （相互身分驗證） 示範專案說明如何使用 TLS 建立與 HTTP 伺服器的連線，並在用戶端和伺服器之間進行相互身分驗證。此示範使用 mbedTLS 型傳輸介面實作來建立伺服器和用戶端驗證的 TLS 連線，並在 HTTP 中示範請求回應工作流程。

**注意**  
若要設定和執行 FreeRTOS 示範，請遵循中的步驟[FreeRTOS 入門](freertos-getting-started.md)。

## 功能
<a name="core-http-ma-demo-functionality"></a>

此示範會建立單一應用程式任務，其中包含示範如何完成下列項目的範例：
+ 連線至 AWS IoT 端點上的 HTTP 伺服器。
+ 傳送 POST 請求。
+ 接收回應。
+ 中斷與伺服器的連線。

完成這些步驟後，示範會產生類似下列螢幕擷取畫面的輸出。

![\[日誌輸出顯示 AWS IoT 示範初始化、TLS 工作階段建立、HTTP POST 請求，以及表示示範成功完成的記憶體指標。\]](http://docs.aws.amazon.com/zh_tw/freertos/latest/userguide/images/coreHTTP.output.png)


 AWS IoT 主控台會產生類似下列螢幕擷取畫面的輸出。

![\[AWS IoT 主控台顯示 2020 年 11 月 20 日 UTC 19：09：09 發佈至主題的「Hello from AWS IoT console」訊息。\]](http://docs.aws.amazon.com/zh_tw/freertos/latest/userguide/images/coreHTTP.console.png)


## 原始碼組織
<a name="core-http-s3-ma-demo-source-code-organization"></a>

示範來源檔案已命名`http_demo_mutual_auth.c`，可在 `freertos/demos/coreHTTP/`目錄和 [ GitHub](https://github.com/aws/amazon-freertos/blob/main/demos/coreHTTP/http_demo_mutual_auth.c) 網站上找到。

## 連線至 AWS IoT HTTP 伺服器
<a name="core-http-ma-demo-connecting"></a>

[ connectToServerWithBackoffRetries](https://github.com/aws/amazon-freertos/blob/main/demos/common/http_demo_helpers/http_demo_utils.c#L131-L170) 函數會嘗試對 AWS IoT HTTP 伺服器進行相互驗證的 TLS 連線。如果連線失敗，則會在逾時後重試。逾時值會呈指數增加，直到達到最大嘗試次數或達到最大逾時值為止。`RetryUtils_BackoffAndSleep` 函數提供指數增加的逾時值，並在達到最大嘗試次數`RetryUtilsRetriesExhausted`時傳回 。如果無法在設定的嘗試次數之後建立與代理程式的 TLS 連線，`connectToServerWithBackoffRetries`則函數會傳回失敗狀態。

## 傳送 HTTP 請求並接收回應
<a name="core-http-ma-demo-send-receive"></a>

[ prvSendHttpRequest](https://github.com/aws/amazon-freertos/blob/main/demos/coreHTTP/http_demo_mutual_auth.c#L402-L507) 函數示範如何將 POST 請求傳送至 AWS IoT HTTP 伺服器。如需在 中向 REST API 提出請求的詳細資訊 AWS IoT，請參閱[裝置通訊協定 - HTTPS](https://docs.aws.amazon.com/iot/latest/developerguide/http.html)。系統會使用相同的 coreHTTP API 呼叫 接收回應`HTTPClient_Send`。