我正在通过HttpClient进行API webAPP之间的通信<->。
这是我的API控制器:
[HttpPut, Route("voipport/{newPort}")]
public async Task<IActionResult> PutVoipPort(int newPort)
{
try
{
await _repository.ChangePort(newPort);
await _repository.AddNewRecord("PutVoipPort", "Success");
return Ok();
}
catch(Exception exception)
{
return BadRequest(exception.Message);
}
}
这是从网站发出的:
public async Task VOIPChangePort(int newPort)
{
var json = JsonConvert.SerializeObject(newPort);
var data = new StringContent(json,Encoding.UTF8,"application/json");
var result = await _httpClient.PutAsync("voipport/{newPort}", data);
result.EnsureSuccessStatusCode();
Console.WriteLine(result);
}
结果是这样的:
{StatusCode: 400, ReasonPhrase: 'Bad Request', Version: 1.1, Content: System.Net.Http.HttpConnectionResponseContent, Headers:
{
Date: Fri, 25 Nov 2022 18:15:08 GMT
Server: Kestrel
Transfer-Encoding: chunked
Content-Type: application/problem+json; charset=utf-8
}}
我不知道为什么我不能调用我的控制器方法。
UPDATE这是解决方案
public async Task VOIPChangePort(int newPort)
{
var result = await _httpClient.PutAsync($"voipport/{newPort}", null);
result.EnsureSuccessStatusCode();
}
1条答案
按热度按时间lf5gs5x21#
newPort
似乎是路由的一部分,而不是主体。不要传递任何JSON。当你应该用实际的int纽波特来模板化这个字符串时,你却调用了
voipport/{newPort}
,如下所示:voipport/65000
.