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!