Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah saya boleh Log Permintaan HTTP dan Mesej Respons dengan HttpClient dalam C#?

Bagaimanakah saya boleh Log Permintaan HTTP dan Mesej Respons dengan HttpClient dalam C#?

Linda Hamilton
Linda Hamiltonasal
2025-01-03 16:15:391060semak imbas

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

Mesej Permintaan Log/Respons dalam HttpClient

Apabila melakukan permintaan POST dengan HttpClient, mendapatkan muatan JSON sebenar yang disiarkan boleh menjadi berharga untuk tujuan pengelogan . Daripada mensiri objek sendiri secara manual, pertimbangkan untuk menggunakan LoggingHandler tersuai.

Dengan memintas permintaan sebelum ia dikendalikan oleh HttpClientHandler, LoggingHandler menyediakan akses kepada permintaan dan mesej respons. Dalam kaedah ReadAsStringAsync, pemformat di dalam ObjectContent mensirikan objek, menghasilkan kandungan JSON yang anda cari.

Contoh 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;
    }
}

Mengintegrasikan LoggingHandler dengan HttpClient:

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

Log Output:

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

Atas ialah kandungan terperinci Bagaimanakah saya boleh Log Permintaan HTTP dan Mesej Respons dengan HttpClient dalam C#?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn