首页 > 后端开发 > C++ > 如何在 C# 中使用 HttpClient 记录 HTTP 请求和响应消息?

如何在 C# 中使用 HttpClient 记录 HTTP 请求和响应消息?

Linda Hamilton
发布: 2025-01-03 16:15:39
原创
1027 人浏览过

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

在 HttpClient 中记录请求/响应消息

使用 HttpClient 执行 POST 请求时,获取发布的实际 JSON 负载对于记录目的非常有价值。考虑使用自定义 LoggingHandler,而不是自己手动序列化对象。

通过在 HttpClientHandler 处理请求之前拦截请求,LoggingHandler 提供对请求和响应消息的访问。在 ReadAsStringAsync 方法中,ObjectContent 内的格式化程序会序列化对象,从而生成您要查找的 JSON 内容。

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;
    }
}
登录后复制

集成 LoggingHandler HttpClient:

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

输出日志:

Request: POST http://example.com/api/values
Request Content: "Hello, World!"
Response: 200 OK
Response Content: "Hello, World!"
登录后复制

以上是如何在 C# 中使用 HttpClient 记录 HTTP 请求和响应消息?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板