Пример #1
0
        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}"
                });
            }
        }