Maison >développement back-end >C++ >Comment puis-je enregistrer les messages de requête et de réponse HTTP avec HttpClient en C# ?

Comment puis-je enregistrer les messages de requête et de réponse HTTP avec HttpClient en C# ?

Linda Hamilton
Linda Hamiltonoriginal
2025-01-03 16:15:391060parcourir

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

Consignation des messages de demande/réponse dans HttpClient

Lors de l'exécution de requêtes POST avec HttpClient, l'obtention de la charge utile JSON réelle publiée peut être utile à des fins de journalisation . Au lieu de sérialiser manuellement l'objet vous-même, envisagez d'utiliser un LoggingHandler personnalisé.

En interceptant la requête avant qu'elle ne soit traitée par HttpClientHandler, LoggingHandler donne accès aux messages de requête et de réponse. Dans la méthode ReadAsStringAsync, le formateur à l'intérieur d'ObjectContent sérialise l'objet, ce qui donne le contenu JSON que vous recherchez.

Exemple de 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;
    }
}

Intégration du LoggingHandler avec HttpClient :

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

Journal de sortie :

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

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!

Déclaration:
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