Rumah > pembangunan bahagian belakang > C++ > Bagaimana untuk Log Permintaan dan Respons Kandungan JSON Menggunakan HttpClient?

Bagaimana untuk Log Permintaan dan Respons Kandungan JSON Menggunakan HttpClient?

Susan Sarandon
Lepaskan: 2025-01-01 04:33:09
asal
860 orang telah melayarinya

How to Log Request and Response JSON Content Using HttpClient?

Mesej Permintaan Log/Respons dalam HttpClient

Artikel ini menangani keperluan untuk permintaan log dan mesej respons apabila menggunakan HttpClient. Ia menumpukan pada pendekatan praktikal untuk mengelog kandungan JSON sebenar yang disiarkan melalui kaedah PostAsJsonAsync HttpClient.

Penyelesaian:

Untuk merekodkan kandungan JSON, kami menggunakan DelegatingHandler bernama LoggingHandler . Pemintasan berlaku sebelum permintaan mencapai HttpClientHandler, membolehkan akses kepada data JSON. Pemformat dalaman ObjectContent menghasilkan perwakilan JSON yang ditangkap oleh kaedah ReadAsStringAsync LoggingHandler.

Pelaksanaan kelas LoggingHandler adalah seperti berikut:

public class LoggingHandler : DelegatingHandler
{
    public LoggingHandler(HttpMessageHandler innerHandler)
        : base(innerHandler)
    {
    }

    protected override async Task<HttpResponseMessage> SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
    {
        Console.WriteLine("Request:");
        Console.WriteLine(request.ToString());
        if (request.Content != null)
        {
            Console.WriteLine(await request.Content.ReadAsStringAsync());
        }
        Console.WriteLine();

        HttpResponseMessage response = await base.SendAsync(request, cancellationToken);

        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

LoggingHandler ini mesti dirantai dengan HttpClient:

HttpClient client = new HttpClient(new LoggingHandler(new HttpClientHandler()));
HttpResponseMessage response = client.PostAsJsonAsync(baseAddress + "/api/values", "Hello, World!").Result;
Salin selepas log masuk

Output yang terhasil menunjukkan pengelogan kedua-dua permintaan dan mesej respons, termasuk kandungan JSON yang disiarkan:

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

Teknik ini menyediakan mekanisme pengelogan terperinci untuk permintaan dan respons HttpClient, membantu dalam penyahpepijatan dan pemantauan komunikasi melalui HTTP.

Atas ialah kandungan terperinci Bagaimana untuk Log Permintaan dan Respons Kandungan JSON Menggunakan HttpClient?. 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