Heim >Backend-Entwicklung >C++ >Wie kann ich HTTP-Anforderungs- und Antwortnachrichten mit HttpClient in C# protokollieren?

Wie kann ich HTTP-Anforderungs- und Antwortnachrichten mit HttpClient in C# protokollieren?

Linda Hamilton
Linda HamiltonOriginal
2025-01-03 16:15:391105Durchsuche

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

Anforderungs-/Antwortnachrichten in HttpClient protokollieren

Beim Ausführen von POST-Anfragen mit HttpClient kann das Abrufen der tatsächlich geposteten JSON-Nutzlast für Protokollierungszwecke hilfreich sein . Anstatt das Objekt selbst manuell zu serialisieren, sollten Sie die Verwendung eines benutzerdefinierten LoggingHandlers in Betracht ziehen.

Durch das Abfangen der Anforderung, bevor sie von HttpClientHandler verarbeitet wird, bietet LoggingHandler Zugriff auf die Anforderungs- und Antwortnachrichten. In der ReadAsStringAsync-Methode serialisiert der Formatierer im ObjectContent das Objekt, was zu dem gesuchten JSON-Inhalt führt.

Beispiel für einen 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;
    }
}

Integration des LoggingHandlers mit HttpClient:

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

Ausgabeprotokoll:

Request: POST http://example.com/api/values
Request Content: "Hello, World!"
Response: 200 OK
Response Content: "Hello, World!"

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

Stellungnahme:
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