using Newtonsoft.Json; using System; using System.Collections.Generic; using System.Net; using System.Net.Http; using System.Text; using System.Threading.Tasks; namespace CPMeta { public class RestAPI { private static HttpClient RequestClient = new HttpClient(); private static HttpClient ResponseClient = new HttpClient(); static RestAPI() { ServicePointManager.ServerCertificateValidationCallback += (sender, cert, chain, sslPolicyErrors) => true; ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12; RequestClient.Timeout = TimeSpan.FromMilliseconds(3000); ResponseClient.Timeout = TimeSpan.FromMilliseconds(3000); } public static async Task PostAsync(string Url, REQUEST body) where REQUEST : class where RESPONSE : class { try { if (body != null) { var jsonBody = JsonConvert.SerializeObject(body); var contents = new StringContent(jsonBody, Encoding.UTF8, "application/json"); var response = await RequestClient.PostAsync(Url, contents); var resContentStr = await response.Content.ReadAsStringAsync(); return JsonConvert.DeserializeObject(resContentStr); } } catch (Exception e) { Console.WriteLine("PostAsync Error"); Console.WriteLine(e.Message); } return default(RESPONSE); } public static async Task GetAsync(string Url) { try { var response = await ResponseClient.GetAsync(Url); var resContentStr = await response.Content.ReadAsStringAsync(); return JsonConvert.DeserializeObject(resContentStr); } catch(Exception e) { Console.WriteLine("GetAsync Error"); Console.WriteLine(e.Message); } return default(RESPONSE); } } }