private static async Task ProcessPostQueueRequest(PostWebRequestModel request) { using (var handler = new HttpClientHandler()) { // Disable SSL checking handler.ClientCertificateOptions = ClientCertificateOption.Manual; handler.ServerCertificateCustomValidationCallback = (httpRequestMessage, cert, cetChain, policyErrors) => { return(true); }; handler.AllowAutoRedirect = true; handler.MaxAutomaticRedirections = 3; handler.MaxConnectionsPerServer = 100; var content = new StringContent(JsonConvert.SerializeObject(request.Data), Encoding.UTF8, "application/json"); try { using (var client = new HttpClient(handler)) { if (request.Headers != null && request.Headers.Count > 0) { foreach (var header in request.Headers) { client.DefaultRequestHeaders.Add(header.Key, header.Value); } } var response = await client.PostAsync(request.Url, content, request.CancellationToken.Token); using (var stream = await response.Content.ReadAsStreamAsync()) { using (var reader = new StreamReader(stream, Encoding.UTF8)) { var data = reader.ReadToEnd(); request.Callback(data); } } } } catch (WebException ex) { using (var stream = ex.Response.GetResponseStream()) { using (var reader = new StreamReader(stream)) { Console.WriteLine(reader.ReadToEnd()); } } } catch (Exception ex) { Debug.Print(ex.ToString()); } finally { content.Dispose(); } } }
public static bool Post <T>(string url, T data, Action <string> callback, Dictionary <string, string> headers = null, int priority = 0, CancellationTokenSource cancelTokenSource = null) { try { var request = new PostWebRequestModel() { Url = url, Callback = callback, Priority = priority, Headers = headers, Data = data, CancellationToken = cancelTokenSource == null ? new CancellationTokenSource() : cancelTokenSource }; postQueue.TryAdd(request, 5000, request.CancellationToken.Token); return(true); } catch (Exception ex) { Debug.Print(ex.ToString()); return(false); } }