簡體   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