【发布时间】:2018-11-30 18:33:11
【问题描述】:
我有两个 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 值。
我在这里做错了什么?
【问题讨论】:
-
肯定显示
BadRequest。你说你期待415。你看到什么不正确? -
最终我不会发送短信。我主要担心的是我没有使用我的 API 方法。你认为我不会因为
Content-Type而击中它吗?一旦我确保一切正常,我将发送JSON数据,这些数据将在接收端进行反序列化。 -
是的,我愿意。您可以通过将
HttpClient请求更改为使用application/json而不是text/plain来轻松测试它,并且只需将周围的引号添加到您的虚拟字符串("\"Saying hello!\"")。
标签: c# asp.net-core dotnet-httpclient