我想为服务器没有响应的情况编写代码。
我故意关闭后端以模拟这种情况。 HttpClient
引发WebAssembly.JSException
和消息
TypeError: Failed to fetch
可以吗?
我认为这令人困惑。 我担心如果我不能依靠这种行为,就会出问题。 我该如何正确处理这种情况?
答案 0 :(得分:0)
以下代码段描述如何执行对Web Api端点的HTTP GET调用,查询IsSuccessStatusCode的值,该值指示HTTP响应是否成功。如果成功,代码将检索数据流,将其反序列化为List<Contact>
,然后将其返回给调用代码。
如果不成功(其他子句),请处理失败...在这里您可以进行任何检查,记录错误,显示消息等。
我要在这里说明的方向不仅是解决您的问题的方法,还包括如何解决诸如NotFound(404)异常等其他异常的方法。
您也可以使用response.EnsureSuccessStatusCode();在try / catch块中,并根据您的需要处理异常。
您可以通过各种方式来做所有这些事情...
public async Task<List<Contact>> GetContactsAsync()
{
var response = await httpClient.GetAsync("api/contacts");
// response.EnsureSuccessStatusCode();
if (response.IsSuccessStatusCode)
{
// Handle success
var responseContent = await response.Content.ReadAsStreamAsync();
return await JsonSerializer.DeserializeAsync<List<Contact>>(responseContent);
}
else
{
// Handle failure
}
}