Maison > développement back-end > C++ > Comment enregistrer les messages de requête/réponse HTTP à l'aide de HttpClient en C# ?

Comment enregistrer les messages de requête/réponse HTTP à l'aide de HttpClient en C# ?

Patricia Arquette
Libérer: 2024-12-31 15:14:10
original
672 Les gens l'ont consulté

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

Consignation des messages de requête/réponse HTTP avec HttpClient

Lorsque vous travaillez avec HttpClient, la journalisation des messages de requête et de réponse est cruciale pour le débogage et le dépannage. Cela permet aux développeurs d'inspecter les données réelles envoyées et reçues par le service.

Une méthode pour y parvenir consiste à utiliser un LoggingHandler personnalisé qui intercepte à la fois les messages de demande et de réponse. Ce gestionnaire peut être chaîné avec le HttpClientHandler sous-jacent pour observer le flux des messages.

Gestionnaire de journalisation :

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;
    }
}
Copier après la connexion

Utilisation :

Pour utiliser LoggingHandler, chaînez-le avec HttpClientHandler comme suit :

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

Sortie :

L'exécution du code ci-dessus produit la sortie suivante :

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!"
Copier après la connexion

En incorporant ce mécanisme de journalisation, les développeurs obtenez des informations en temps réel sur les requêtes et les réponses HTTP, permettant un débogage et une analyse efficaces des interactions de service.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal