ホームページ > バックエンド開発 > C++ > C# の HttpClient を使用して HTTP リクエストおよび応答メッセージをログに記録するにはどうすればよいですか?

C# の HttpClient を使用して HTTP リクエストおよび応答メッセージをログに記録するにはどうすればよいですか?

Linda Hamilton
リリース: 2025-01-03 16:15:39
オリジナル
1100 人が閲覧しました

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

HttpClient でのリクエスト/レスポンス メッセージのログ記録

HttpClient で POST リクエストを実行する場合、ポストされた実際の JSON ペイロードを取得すると、ログ記録の目的で役立ちます。 。オブジェクトを手動でシリアル化する代わりに、カスタム LoggingHandler を利用することを検討してください。

HttpClientHandler によって処理される前にリクエストをインターセプトすることで、LoggingHandler はリクエスト メッセージと応答メッセージへのアクセスを提供します。 ReadAsStringAsync メソッドでは、ObjectContent 内のフォーマッタがオブジェクトをシリアル化し、その結果、求める JSON コンテンツが得られます。

LoggingHandler の例:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

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:

1

2

HttpClient client = new HttpClient(new LoggingHandler(new HttpClientHandler()));

HttpResponseMessage response = client.PostAsJsonAsync(url, "Hello, World!").Result;

ログイン後にコピー

出力ログ:

1

2

3

4

Request: POST http://example.com/api/values

Request Content: "Hello, World!"

Response: 200 OK

Response Content: "Hello, World!"

ログイン後にコピー

以上がC# の HttpClient を使用して HTTP リクエストおよび応答メッセージをログに記録するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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