
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:
Request Content: "Hello, World!"
Response: 200 OK
Response Content: "Hello, World!"
|
ログイン後にコピー
以上がC# の HttpClient を使用して HTTP リクエストおよび応答メッセージをログに記録するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。