Laservall_solidworks_inject/Common/HttpClientHelper.cs

54 lines
2.1 KiB
C#
Raw Permalink Normal View History

using Newtonsoft.Json;
using System;
using System.Net.Http;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
namespace Laservall.Solidworks.Common
{
public static class HttpClientHelper
{
private static readonly HttpClient _client = new HttpClient
{
Timeout = TimeSpan.FromSeconds(30)
};
public static void SetBaseAddress(string baseUrl)
{
if (!string.IsNullOrEmpty(baseUrl))
{
_client.BaseAddress = new Uri(baseUrl.TrimEnd('/') + "/");
}
}
public static async Task<TResponse> PostJsonAsync<TRequest, TResponse>(
string url, TRequest body, CancellationToken ct = default(CancellationToken))
{
var json = JsonConvert.SerializeObject(body);
var content = new StringContent(json, Encoding.UTF8, "application/json");
var response = await _client.PostAsync(url, content, ct).ConfigureAwait(false);
response.EnsureSuccessStatusCode();
var responseText = await response.Content.ReadAsStringAsync().ConfigureAwait(false);
return JsonConvert.DeserializeObject<TResponse>(responseText);
}
public static async Task<T> GetJsonAsync<T>(string url, CancellationToken ct = default(CancellationToken))
{
var response = await _client.GetAsync(url, ct).ConfigureAwait(false);
response.EnsureSuccessStatusCode();
var responseText = await response.Content.ReadAsStringAsync().ConfigureAwait(false);
return JsonConvert.DeserializeObject<T>(responseText);
}
public static async Task PostJsonAsync<TRequest>(
string url, TRequest body, CancellationToken ct = default(CancellationToken))
{
var json = JsonConvert.SerializeObject(body);
var content = new StringContent(json, Encoding.UTF8, "application/json");
var response = await _client.PostAsync(url, content, ct).ConfigureAwait(false);
response.EnsureSuccessStatusCode();
}
}
}