private string SendRequest(string ip, string jsonRequest, int timeout, bool isOpen, string path, out string errorMessage) { string jsonResponse = string.Empty; errorMessage = string.Empty; CertificateErrorMessage = string.Empty; ServicePointManager.Expect100Continue = true; ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12; ServicePointManager.ServerCertificateValidationCallback = new System.Net.Security.RemoteCertificateValidationCallback(ValidateCertificate); string host = "https://" + jsonrpcServerIP + ":" + portNumber; Uri target = new Uri(host); try { HttpWebRequest request = (HttpWebRequest)WebRequest.Create(ip); if (!isOpen) { request.CookieContainer = new CookieContainer(); request.CookieContainer.Add(new Cookie("sysauth", token, path, target.Host)); } request.ContentType = "application/json"; request.Method = "POST"; request.Timeout = timeout; X509Certificate clientCertificate = CertificateHelper.FetchWindowsClientCertificate(); if (clientCertificate != null) { request.ClientCertificates.Add(clientCertificate); } using (var streamWriter = new StreamWriter(request.GetRequestStream())) { streamWriter.Write(jsonRequest); streamWriter.Flush(); streamWriter.Close(); } WebResponse response = request.GetResponse(); using (var streamReader = new StreamReader(response.GetResponseStream())) { jsonResponse = streamReader.ReadToEnd(); } } catch (Exception ex) { errorMessage = ex.Message; } return jsonResponse; }