Heim > Backend-Entwicklung > C++ > Wie protokolliere ich JSON-Inhalte für Anfragen und Antworten mit HttpClient?

Wie protokolliere ich JSON-Inhalte für Anfragen und Antworten mit HttpClient?

Susan Sarandon
Freigeben: 2025-01-01 04:33:09
Original
876 Leute haben es durchsucht

How to Log Request and Response JSON Content Using HttpClient?

Anforderungs-/Antwortnachrichten in HttpClient protokollieren

In diesem Artikel geht es um die Notwendigkeit der Protokollierung von Anforderungs- und Antwortnachrichten bei der Verwendung von HttpClient. Es konzentriert sich auf den praktischen Ansatz der Protokollierung des tatsächlichen JSON-Inhalts, der über die PostAsJsonAsync-Methode von HttpClient gepostet wird.

Lösung:

Um den JSON-Inhalt aufzuzeichnen, verwenden wir einen DelegatingHandler namens LoggingHandler . Das Abfangen erfolgt, bevor die Anfrage den HttpClientHandler erreicht, wodurch der Zugriff auf die JSON-Daten ermöglicht wird. Der interne Formatierer von ObjectContent erzeugt die JSON-Darstellung, die von der ReadAsStringAsync-Methode des LoggingHandlers erfasst wird.

Die Implementierung der LoggingHandler-Klasse ist wie folgt:

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

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

        HttpResponseMessage response = await base.SendAsync(request, cancellationToken);

        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

Dieser LoggingHandler muss mit dem HttpClient verkettet werden:

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

Die resultierende Ausgabe zeigt die Protokollierung sowohl der Anfrage als auch Antwortnachrichten, einschließlich des geposteten JSON-Inhalts:

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

Diese Technik bietet einen detaillierten Protokollierungsmechanismus für HttpClient-Anfragen und -Antworten und hilft beim Debuggen und Überwachen der Kommunikation über HTTP.

Das obige ist der detaillierte Inhalt vonWie protokolliere ich JSON-Inhalte für Anfragen und Antworten mit HttpClient?. 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