private RequestResult Request(string bpmServiceUri, string body, out HttpWebRequest req, CookieContainer bpmCookieContainer) { req = (HttpWebRequest)WebRequest.Create(String.Format("{0}/0/rest/{1}", _uri, bpmServiceUri)); req.Method = "POST"; req.ContentType = "application/json"; req.Accept = "application/json"; req.CookieContainer = bpmCookieContainer; req.Credentials = System.Net.CredentialCache.DefaultCredentials; req.Proxy.Credentials = System.Net.CredentialCache.DefaultCredentials; req.Timeout = 10 * 1000 * 60; string csrfToken; if (_useLocalCookie) { csrfToken = _csrf; req.CookieContainer = _bpmCookieContainer; } else { GlobalCacheReader.GetValue(GlobalCacheReader.CacheKeys.BPMCSRF, out csrfToken); } if (!String.IsNullOrEmpty(csrfToken)) { req.Headers.Add("BPMCSRF", csrfToken); } using (var requestStream = req.GetRequestStream()) { using var streamWriter = new StreamWriter(requestStream); streamWriter.Write(body); streamWriter.Flush(); streamWriter.Close(); } try { using var response = req.GetResponse(); using var responseStream = response.GetResponseStream(); using var streamReader = new StreamReader(responseStream); return(new RequestResult() { IsSuccess = true, ResponseStr = streamReader.ReadToEnd() }); } catch (WebException e) { if (e.Response == null) { Logger.LogError($"{bpmServiceUri} error: ", e); return(new RequestResult() { IsSuccess = false, ResponseStr = $"{e.Message} null response" }); } using var streamReader = new StreamReader(e.Response.GetResponseStream()); var res = streamReader.ReadToEnd(); Logger.LogError($"{bpmServiceUri} error. {res}", e); return(new RequestResult() { IsSuccess = false, ResponseStr = $"{e.Message} {res}" }); } }