繁体   English   中英

为什么HttpClient.PostAsync不会失败?

[英]Why does HttpClient.PostAsync not throw on failure?

在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}).");
}

您可以使用HttpResponseMessage.EnsureSuccessStatusCode方法:

如果HTTP响应的IsSuccessStatusCode属性为false,则引发异常。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM