>백엔드 개발 >C++ >C#에서 HttpClient를 사용하여 HTTP 요청/응답 메시지를 기록하는 방법은 무엇입니까?

C#에서 HttpClient를 사용하여 HTTP 요청/응답 메시지를 기록하는 방법은 무엇입니까?

Patricia Arquette
Patricia Arquette원래의
2024-12-31 15:14:10676검색

How to Log HTTP Request/Response Messages Using HttpClient in C#?

HttpClient로 HTTP 요청/응답 메시지 로깅

HttpClient로 작업할 때 요청 및 응답 메시지 로깅은 디버깅과 문제 해결에 매우 중요합니다. 이를 통해 개발자는 서비스에서 보내고 받는 실제 데이터를 검사할 수 있습니다.

이를 달성하는 한 가지 방법은 요청 및 응답 메시지를 모두 가로채는 사용자 정의 LoggingHandler를 활용하는 것입니다. 이 핸들러는 기본 HttpClientHandler와 연결되어 메시지 흐름을 관찰할 수 있습니다.

로깅 핸들러:

public class LoggingHandler : DelegatingHandler
{
    public LoggingHandler(HttpMessageHandler innerHandler) : base(innerHandler)
    {
    }

    protected override async Task<HttpResponseMessage> SendAsync(
        HttpRequestMessage request, CancellationToken cancellationToken)
    {
        // Log request details
        Console.WriteLine($"Request:");
        Console.WriteLine(request.ToString());
        if (request.Content != null)
        {
            Console.WriteLine(await request.Content.ReadAsStringAsync());
        }
        Console.WriteLine();

        // Send request to inner handler
        HttpResponseMessage response = await base.SendAsync(request, cancellationToken);

        // Log response details
        Console.WriteLine($"Response:");
        Console.WriteLine(response.ToString());
        if (response.Content != null)
        {
            Console.WriteLine(await response.Content.ReadAsStringAsync());
        }
        Console.WriteLine();

        return response;
    }
}

사용:

LoggingHandler를 사용하려면 다음과 같이 HttpClientHandler와 연결하세요. 다음:

HttpClient client = new HttpClient(new LoggingHandler(new HttpClientHandler()));
HttpResponseMessage response = client.PostAsJsonAsync(baseAddress + "/api/values", "Hello, World!").Result;

출력:

위 코드를 실행하면 다음과 같은 출력이 생성됩니다.

Request:
Method: POST, RequestUri: 'http://kirandesktop:9095/api/values', Version: 1.1, Content: System.Net.Http.ObjectContent`1[
[System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]], Headers:
{
  Content-Type: application/json; charset=utf-8
}
"Hello, World!"

Response:
StatusCode: 200, ReasonPhrase: 'OK', Version: 1.1, Content: System.Net.Http.StreamContent, Headers:
{
  Date: Fri, 20 Sep 2013 20:21:26 GMT
  Server: Microsoft-HTTPAPI/2.0
  Content-Length: 15
  Content-Type: application/json; charset=utf-8
}
"Hello, World!"

이 로깅 메커니즘을 통합하여 개발자는 HTTP 요청 및 응답에 대한 실시간 통찰력을 얻어 서비스 상호 작용을 효율적으로 디버깅하고 분석할 수 있습니다.

위 내용은 C#에서 HttpClient를 사용하여 HTTP 요청/응답 메시지를 기록하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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