在ASP.Net Core Web服务中,如果HttpClient.GetStringAsync调用因404错误或其他原因而失败,则会抛出HttpRequestException。这很棒。
另一方面,如果404的HttpClient.PostAsync调用失败,则不会抛出异常。我必须检查状态代码,制作异常并手动抛出它。
为什么要有这种差异,是否有一种更优雅的方式来解决这个问题?
HttpResponseMessage response = await _http.PostAsync("api/pollapi/request", new StringContent(requestInput));
if (!response.IsSuccessStatusCode)
{
throw new HttpRequestException($"Response status does not indicate success: {(int)response.StatusCode} ({response.StatusCode}).");
}
答案 0 :(得分:5)
您可以使用HttpResponseMessage.EnsureSuccessStatusCode
方法:
如果HTTP响应的IsSuccessStatusCode属性为false,则抛出异常。