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 PostJsonAsync( 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(responseText); } public static async Task GetJsonAsync(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(responseText); } public static async Task PostJsonAsync( 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(); } } }