我有两个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
。在这里我做错了什么?
Content-Type
吗?一旦我确保一切正常,我将发送JSON
数据,该数据将在接收端进行反序列化。 - SamHttpClient
请求更改为使用application/json
而不是text/plain
,并简单地在您的虚拟字符串周围添加引号("\"Saying hello!\""
)来轻松测试它。 - Kirk Larkin