Rumah > pembangunan bahagian belakang > C++ > Bagaimana untuk Log Mesej Permintaan/Respons HTTP Menggunakan HttpClient dalam C#?

Bagaimana untuk Log Mesej Permintaan/Respons HTTP Menggunakan HttpClient dalam C#?

Patricia Arquette
Lepaskan: 2024-12-31 15:14:10
asal
665 orang telah melayarinya

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

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;
    }
}
Salin selepas log masuk

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;
Salin selepas log masuk

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!"
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan