ホームページ > バックエンド開発 > 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 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート