54 lines
2.1 KiB
C#
54 lines
2.1 KiB
C#
|
|
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();
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|