Melog Permintaan/Respons HTTP Mesej dengan HttpClient
Apabila bekerja dengan HttpClient, permintaan pengelogan dan mesej respons adalah penting untuk penyahpepijatan dan penyelesaian masalah. Ini membolehkan pembangun memeriksa data sebenar yang dihantar dan diterima oleh perkhidmatan.
Satu kaedah untuk mencapai ini adalah dengan menggunakan LoggingHandler tersuai yang memintas kedua-dua mesej permintaan dan respons. Pengendali ini boleh dirantai dengan HttpClientHandler asas untuk memerhati aliran mesej.
Pengendali Log:
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; } }
Penggunaan:
Untuk menggunakan LoggingHandler, rantaikannya dengan HttpClientHandler sebagai berikut:
HttpClient client = new HttpClient(new LoggingHandler(new HttpClientHandler())); HttpResponseMessage response = client.PostAsJsonAsync(baseAddress + "/api/values", "Hello, World!").Result;
Output:
Melaksanakan kod di atas menghasilkan output berikut:
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!"
Dengan menggabungkan mekanisme pembalakan ini, pembangun dapatkan cerapan masa nyata tentang permintaan dan respons HTTP, membolehkan penyahpepijatan dan analisis perkhidmatan yang cekap interaksi.
Atas ialah kandungan terperinci Bagaimana untuk Log Mesej Permintaan/Respons HTTP Menggunakan HttpClient dalam C#?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!