/// <summary> /// Method Post /// Using the config settings as setup for the request. /// </summary> /// <typeparam name="T">Any serializable class</typeparam> /// <param name="config">Contains all the parameters needed to complete the call</param> /// <param name="model">The data that will be serialized and sent with the request</param> /// <returns>Task<string></returns> public Task <string> PostRequestAsync <T>(SimpleClientConfig config, T model) { Task <string> result = null; using (HttpClient client = new HttpClient()) { try { SetSecurityProtocol(config.ProtocolType); var jsonContent = JsonConvert.SerializeObject(model); client.DefaultRequestHeaders.Accept.Clear(); client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json")); AddCustomHeaders(client, config.CustomHeaders); client.DefaultRequestHeaders.Authorization = null; var byteContent = CreateBinaryContent(jsonContent); Task <HttpResponseMessage> response = client.PostAsync(config._targetUri, byteContent); response.Result.EnsureSuccessStatusCode(); result = response.Result.Content.ReadAsStringAsync(); } catch (HttpRequestException e) { throw e; } } return(result); }
/// <summary> /// Remove a custom header from the request /// </summary> /// <param name="model"></param> /// <param name="key"></param> /// <returns></returns> public static bool RemoveCustomHeader(this SimpleClientConfig model, string key) { if (!string.IsNullOrEmpty(key) && model.CustomHeaders.ContainsKey(key)) { model.CustomHeaders.Remove(key); return(true); } else { return(false); } }
/// <summary> /// Add a custom header to the request /// </summary> /// <param name="model"></param> /// <param name="key"></param> /// <param name="value"></param> /// <returns>Returns True if successful and False if something went wrong</returns> public static bool AddCustomHeader(this SimpleClientConfig model, string key, string value) { if (!string.IsNullOrEmpty(key) && !string.IsNullOrEmpty(value) && !model.CustomHeaders.ContainsKey(key)) { model.CustomHeaders.Add(key, value); return(true); } else { return(false); } }
/// <summary> /// Specify the type of protocol you need to use. /// </summary> /// <param name="model"></param> /// <param name="protocol"></param> public static bool AddProtocolTypeByName(this SimpleClientConfig model, SecurityProtocolNames protocol) { bool result = true; switch (protocol) { case SecurityProtocolNames.Ssl3: model.ProtocolType = SecurityProtocolType.Ssl3; break; case SecurityProtocolNames.Tls: model.ProtocolType = SecurityProtocolType.Tls; break; case SecurityProtocolNames.Tls11: model.ProtocolType = SecurityProtocolType.Tls11; break; case SecurityProtocolNames.Tls12: model.ProtocolType = SecurityProtocolType.Tls12; break; case SecurityProtocolNames.HighestPossible: model.ProtocolType = SecurityProtocolType.Tls12 | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls; break; case SecurityProtocolNames.None: model.ProtocolType = 0; break; default: result = false; break; } return(result); }