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
Susan Sarandonasal
2025-01-01 04:33:09882semak imbas

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

LoggingHandler ini mesti dirantai dengan HttpClient:

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

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!"

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!

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