using Newtonsoft.Json; using SinochemPosClient.Models; using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Net.Http; using System.Net.Http.Headers; using System.Text; using System.Threading.Tasks; namespace SinochemPosClient { public class PosCommunicator where TRequest : RequestBase where TResponse : ResponseBase { private HttpClient client; private string url; public PosCommunicator(string apiUrl) { client = new HttpClient(); client.DefaultRequestHeaders.Accept.Clear(); client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json")); this.url = apiUrl; } public void SendRequest(TRequest request) { try { var requestAsJson = JsonConvert.SerializeObject(request); var formVariables = new List>(); formVariables.Add(new KeyValuePair("param", requestAsJson)); var formContent = new FormUrlEncodedContent(formVariables); HttpResponseMessage httpResponse = client.PostAsync(url, formContent).Result; httpResponse.EnsureSuccessStatusCode(); Response = JsonConvert.DeserializeObject(httpResponse.Content.ReadAsStringAsync().Result);//.ReadAsAsync().Result; } catch (Exception ex) { Response = null; Console.WriteLine(ex); } } public TResponse Response { get; private set; } } }