gpt4 book ai didi

c# - 使用 HttpClient 的简单 POST

转载 作者:行者123 更新时间:2023-11-30 15:14:53 25 4
gpt4 key购买 nike

我有两个 ASP.NET Core 2.1 应用程序,我正在尝试使用 HttpClient 从一个应用程序到另一个应用程序进行简单的 POST 调用。

出于某种原因,当我使用 [FromBody] 获取我尝试接收的简单文本时,我收到了一个 BadRequest 错误。

这是我在发件人上的代码。首先,这是我的 ConfigureServices 方法中的内容。我在 ASP.NET Core 2.1 中使用新的 HttpClientFactory 功能。我还创建了一个名为 myApiCallerClient 的客户端类来处理我的 API 调用:

services.AddHttpClient("myNamedClient", client =>
{
client.BaseAddress = new Uri("http://localhost:50625/api/");
client.DefaultRequestHeaders.Clear();
client.DefaultRequestHeaders.Add("Accept", "application/json");
});

services.AddScoped(x => {
var httpClientFactory = x.GetRequiredService<System.Net.Http.IHttpClientFactory>();
var myApiCallerClient = httpClientFactory.CreateClient("myNamedClient");
return new Clients.ApiCaller.ApiCallerClient(myApiCallerClient);
});

这是 myApiCallerClient 中的代码:

public async Task SayHello()
{
var response = await _httpClient.PostAsync("test", new StringContent("Saying hello!", System.Text.Encoding.UTF8, "text/plain"));
}

这是我在接收端的代码,它是 TestController 中的 POST() API 方法:

[HttpPost]
public async Task Post([FromBody]string input)
{
// Some logic
}

如果我使用 [FromBody] 并且在发件人上收到 BadRequest 错误,我的调用不会命中此方法。如果我使用 [FromHeader],我的请求会触发此 API 方法,但我得到的是一个 null 值。

我在这里做错了什么?

最佳答案

ASP.NET Core 不支持 text/plainContent-Type 开箱即用,因此服务器拒绝您的请求,因为它不是它可以在使用 [FromBody] 属性时进行解析。

在评论中,你说:

Ultimately I won't be sending text. My main concern here is that I'm not hitting my API method. [...] Once I make sure everything is working, I'll be sending JSON data which will get deserialized on the receiving end.

为了测试问题是否是由于 text/plain Content-Type 引起的,您可以将 PostAsync 行更新为某些内容像这样:

var response = await _httpClient.PostAsync(
"test",
new StringContent("\"Saying hello!\"", System.Text.Encoding.UTF8, "application/json"));

由于application/json 默认支持的Content-Type,上面的代码使用它并包装你发送的值"s 以使其成为有效的 JSON 值。

关于c# - 使用 HttpClient 的简单 POST,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53563028/

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