gpt4 book ai didi

.net-core - 获取使用 HttpClient 和 HttpRequestMessage 发送的原始请求

转载 作者:行者123 更新时间:2023-12-05 04:30:38 24 4
gpt4 key购买 nike

在运行 .NET 6(Azure 函数)的 C# 代码中,我使用 HttpClient 发送了一个 HttpRequestMessage。它不起作用,但它应该起作用,所以我想获取我发送的原始请求,包括 header ,以便我可以与文档进行比较并查看差异。

过去我使用过 Fiddler,但现在它对我不起作用,可能是因为我笔记本电脑上的一些安全设置。因此,我正在 Visual Studio 2022 或 .NET 6 的世界中寻找解决方案,我可以在其中获取原始请求以进行故障排除。

这个问题与代码无关,但无论如何这是我的代码。

HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Post, "https://myendpoint.com/rest/something");

var apiToken = "AOU9FrasdgasdfagtHJNV";
request.Headers.Add("Authorization", "Basic " + apiToken);

var message = new
{
sender = "Hey",
message = "Hello world",
recipients = new[] { new { id = 12345678} }
};

request.Content = new StringContent(JsonSerializer.Serialize(message), Encoding.UTF8, "application/json");
request.Headers.Add("Accept", "application/json, text/javascript");
HttpResponseMessage response = await httpClient.SendAsync(request);

调用 SendAsync 时,我想知道到底发送了什么,包括 header 和内容。

最佳答案

如果您不能使用任何代理解决方案(如 Fiddler),那么我可以看到 2 个选项。一个在您的问题的注释中描述为使用 DelegatingHandler。您可以在 documentation 中阅读更多相关信息.有趣的是,HttpClient 支持退出本节中描述的框 https://learn.microsoft.com/en-us/aspnet/core/fundamentals/http-requests?view=aspnetcore-6.0#logging描述 DelegatingHandlers

的文章

如果您担心某些东西会操纵传出请求,那么您可以实现选项 2。这是创建临时的 asp.net 核心应用程序,将 .UseHttpLogging() 中间件插入管道,如所述这里https://learn.microsoft.com/en-us/aspnet/core/fundamentals/http-logging/?view=aspnetcore-6.0这样你就可以从被请求的应用程序的角度确切地知道你的请求是什么样子的。现在,如果您将 azure 函数指向您的临时应用程序 - 您应该会看到发送的内容

希望对你有帮助

关于.net-core - 获取使用 HttpClient 和 HttpRequestMessage 发送的原始请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72001256/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com