>백엔드 개발 >C++ >C#에서 HttpClient를 사용하여 HTTP 요청 및 응답 메시지를 기록하려면 어떻게 해야 합니까?

C#에서 HttpClient를 사용하여 HTTP 요청 및 응답 메시지를 기록하려면 어떻게 해야 합니까?

Linda Hamilton
Linda Hamilton원래의
2025-01-03 16:15:391028검색

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.