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!