Sam*_*Sam 6 c# dotnet-httpclient asp.net-core
我有两个 ASP.NET Core 2.1 应用程序,我正在尝试POST使用HttpClient.
出于某种原因,当我[FromBody]用来获取我尝试接收的简单文本时,出现BadRequest错误。
这是我的发件人代码。首先,这就是我的ConfigureServices方法。我正在使用HttpClientFactoryASP.NET Core 2.1 中的新功能。我还创建了一个名为的客户端类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);
});
Run Code Online (Sandbox Code Playgroud)
这是 myApiCallerClient 中的代码:
public async Task SayHello()
{
var response = await _httpClient.PostAsync("test", new StringContent("Saying hello!", System.Text.Encoding.UTF8, "text/plain"));
}
Run Code Online (Sandbox Code Playgroud)
这是我在接收端的代码,它是 中的POST()API 方法TestController:
[HttpPost]
public async Task Post([FromBody]string input)
{
// Some logic
}
Run Code Online (Sandbox Code Playgroud)
如果我使用[FromBody]并且我BadRequest在发件人处收到错误,则我的呼叫不会命中此方法。如果我使用[FromHeader]我的请求命中这个 API 方法,但我得到了一个null值。
我在这里做错了什么?
ASP.NET核心不支持Content-Type的text/plain开箱即用,所以服务器拒绝你的要求,因为它不是东西,它可以解析使用时[FromBody]的属性。
在评论中,你说:
最终我不会发送文本。我在这里主要担心的是我没有使用我的 API 方法。[...] 一旦我确保一切正常,我将发送 JSON 数据,这些数据将在接收端反序列化。
为了测试问题是否是由于text/plain Content-Type,您可以将您的PostAsync行更新为如下所示:
var response = await _httpClient.PostAsync(
"test",
new StringContent("\"Saying hello!\"", System.Text.Encoding.UTF8, "application/json"));
Run Code Online (Sandbox Code Playgroud)
作为application/json 被支持的Content-Type默认情况下,上面的代码将使用和包装你发送了价值",以使其成为有效的JSON值s。
| 归档时间: |
|
| 查看次数: |
5286 次 |
| 最近记录: |