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.

123 lines
3.4 KiB
C#

6 months ago
namespace HttpClientStudy.UnitTest.HttpClients
9 months ago
{
/// <summary>
/// 简单 HttpClient 包装类
/// </summary>
4 months ago
public class BaseHttpClient
9 months ago
{
9 months ago
#region Get请求
9 months ago
public string Get(string url)
{
6 months ago
var client = new HttpClient();
9 months ago
//可以统一设置HttpClient属性HttpClient可以使用统一设置进行多次请求。
//client.BaseAddress = new Uri(url);
//client.DefaultRequestHeaders.Add("Accept", "application/json");
//client.DefaultRequestVersion = HttpVersion.Version10;
//client.DefaultVersionPolicy = HttpVersionPolicy.RequestVersionOrHigher;
//client.Timeout = TimeSpan.FromSeconds(60);
//client.CancelPendingRequests();
//只有Send是同步方法其它全为异步方法。
//Send同步方法需要HttpRequestMessage参数
6 months ago
var request = new HttpRequestMessage(HttpMethod.Get, url);
9 months ago
var response = client.Send(request);
response.EnsureSuccessStatusCode();
//或者
if (response.IsSuccessStatusCode)
9 months ago
{
9 months ago
//业务逻辑
}
//状态码
if (response is { StatusCode: HttpStatusCode.OK })
{
//业务逻辑
}
//请求头
9 months ago
if (response is { Headers.ETag: null })
{
9 months ago
//业务逻辑
}
var result = response.Content.ReadAsStringAsync().Result;
return result;
}
public async Task<string> GetAsync(string url)
{
6 months ago
var client = new HttpClient();
9 months ago
var response = await client.GetAsync(url);
response.EnsureSuccessStatusCode();
var result = await response.Content.ReadAsStringAsync();
return result;
}
public TResult? GetJson<TResult>(string url)
{
6 months ago
var client = new HttpClient();
9 months ago
6 months ago
var request = new HttpRequestMessage(HttpMethod.Get, url);
9 months ago
var response = client.Send(request);
response.EnsureSuccessStatusCode();
if (response.Content.Headers.ContentType?.MediaType != MediaTypeNames.Application.Json)
{
throw new HttpRequestException("响应不是 json 格式!");
}
var result = response.Content.ReadFromJsonAsync<TResult>().Result;
return result;
}
public async Task<TResult?> GetJsonAsync<TResult>(string url)
{
6 months ago
var client = new HttpClient();
9 months ago
var response = await client.GetAsync(url);
response.EnsureSuccessStatusCode();
if (response.Content.Headers.ContentType?.MediaType != MediaTypeNames.Application.Json)
{
throw new HttpRequestException("响应不是 json 格式!");
}
var result = await response.Content.ReadFromJsonAsync<TResult>();
return result;
}
9 months ago
#endregion
3 months ago
#region Head
#endregion
#region Put
#endregion
#region Post
#endregion
#region Options
#endregion
#region Delete
#endregion
#region Trace
#endregion
#region Connect
#endregion
#region Patch
#endregion
9 months ago
}
}