Heim > Backend-Entwicklung > C++ > Wie protokolliere ich HTTP-Anforderungs-/Antwortnachrichten mit HttpClient in C#?

Wie protokolliere ich HTTP-Anforderungs-/Antwortnachrichten mit HttpClient in C#?

Patricia Arquette
Freigeben: 2024-12-31 15:14:10
Original
665 Leute haben es durchsucht

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

Protokollieren von HTTP-Anforderungs-/Antwortnachrichten mit HttpClient

Bei der Arbeit mit HttpClient ist die Protokollierung von Anforderungs- und Antwortnachrichten für das Debuggen und die Fehlerbehebung von entscheidender Bedeutung. Dadurch können Entwickler die tatsächlich vom Dienst gesendeten und empfangenen Daten überprüfen.

Eine Methode, dies zu erreichen, ist die Verwendung eines benutzerdefinierten LoggingHandlers, der sowohl Anforderungs- als auch Antwortnachrichten abfängt. Dieser Handler kann mit dem zugrunde liegenden HttpClientHandler verkettet werden, um den Nachrichtenfluss zu beobachten.

Protokollierungshandler:

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;
    }
}
Nach dem Login kopieren

Verwendung:

Um den LoggingHandler zu verwenden, verketten Sie ihn mit dem HttpClientHandler as folgt:

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

Ausgabe:

Die Ausführung des obigen Codes erzeugt die folgende Ausgabe:

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!"
Nach dem Login kopieren

Durch die Integration dieses Protokollierungsmechanismus können Entwickler Erhalten Sie Echtzeit-Einblicke in die HTTP-Anfragen und -Antworten und ermöglichen Sie so ein effizientes Debugging und eine Analyse der Service-Interaktionen.

Das obige ist der detaillierte Inhalt vonWie protokolliere ich HTTP-Anforderungs-/Antwortnachrichten mit HttpClient in C#?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage