首頁 > 後端開發 > C++ > 如何在 C# 中使用 HttpClient 記錄 HTTP 請求和回應訊息?

如何在 C# 中使用 HttpClient 記錄 HTTP 請求和回應訊息?

Linda Hamilton
發布: 2025-01-03 16:15:39
原創
988 人瀏覽過

How Can I Log HTTP Request and Response Messages with HttpClient in C#?

在HttpClient 中記錄請求/回應訊息

使用HttpClient 執行POST 請求時,取得發佈的實際JSON 負載對於記錄非常目的價值。考慮使用自訂 LoggingHandler,而不是自己手動序列化物件。

透過在 HttpClientHandler 處理請求之前攔截請求,LoggingHandler 提供對請求和回應訊息的存取。在 ReadAsStringAsync 方法中,ObjectContent 內的格式化程式會序列化對象,從而產生您要尋找的 JSON 內容。

LoggingHandler 範例:

public class LoggingHandler : DelegatingHandler
{
    protected override async Task<HttpResponseMessage> SendAsync(...)
    {
        Console.WriteLine($"Request: {request}");
        Console.WriteLine($"Request Content: {await request.Content.ReadAsStringAsync()}");

        HttpResponseMessage response = await base.SendAsync(...);

        Console.WriteLine($"Response: {response}");
        Console.WriteLine($"Response Content: {await response.Content.ReadAsStringAsync()}");

        return response;
    }
}
登入後複製

整合 LoggingHandler HttpClient:

HttpClient client = new HttpClient(new LoggingHandler(new HttpClientHandler()));
HttpResponseMessage response = client.PostAsJsonAsync(url, "Hello, World!").Result;
登入後複製

輸出日誌:

Request: POST http://example.com/api/values
Request Content: "Hello, World!"
Response: 200 OK
Response Content: "Hello, World!"
登入後複製

以上是如何在 C# 中使用 HttpClient 記錄 HTTP 請求和回應訊息?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板