using HttpClientStudy.Config;
using Microsoft.Extensions.Options;
namespace HttpClientStudy.Core
{
///
/// Http 错误处理
///
///
/// 常见方式
/// (仅个人见解)
///
/// -
/// HtppClient 提供的状态码、EnsureSuccessStatusCode()等机制
/// (适用HttpClient内部错误)
///
/// -
/// Try Catch 方式
/// (适用外部)
///
/// -
/// 使用 Polly 类库
/// (更多功能)
///
///
///
///
/// 简化处理
///
public class HttpError
{
// 定义一个 HttpClient 实例,共享
public static HttpClient HttpClient = new HttpClient(new SocketsHttpHandler() { PooledConnectionLifetime = TimeSpan.FromMinutes(1) })
{
BaseAddress = new Uri(WebApiConfigManager.GetWebApiConfig().BaseUrl)
};
///
/// 未知主机错误
///
///
public async Task UnknownHostAsync()
{
var response = await HttpClient.GetAsync("http://www.unknowhost_nonono.com/404.html");
return response.StatusCode;
}
///
/// 404错误
///
///
public async Task Http404Async()
{
var response = await HttpClient.GetAsync("/404.html");
return response.StatusCode;
}
///
/// 服务器错误
///
///
public async Task Http500Async()
{
var response = await HttpClient.GetAsync("/api/ErrorDemo/Error500");
return response.StatusCode;
}
}
}