You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

71 lines
2.1 KiB
C#

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