Пример #1
0
        public virtual void ExecuteQuery(HttpWebRequest _httpWebRequest)
        {
            string serverAnswer = string.Empty;

            if (_httpWebRequest == null)
            {
                ActionCode = ActionResultCode.Error_WebConnection;
                return;
            }
            try
            {
                using (HttpWebResponse _httpWebResponse = (HttpWebResponse)_httpWebRequest.GetResponse())
                {
                    this.ActionHttpStatusCode = _httpWebResponse.StatusCode;
                    this.ResponceHeaders      = _httpWebResponse.Headers;
                    using (System.IO.StreamReader sr = new System.IO.StreamReader(_httpWebResponse.GetResponseStream()))
                    {
                        serverAnswer = sr.ReadToEnd();
                        ProcessResult(serverAnswer);
                    }
                }
            }
            catch (WebException wex)
            {
                this.ActionCode = ActionResultCode.Error_WebConnection;
                if (wex.Response != null)
                {
                    wex.Response.Close();
                    this.ActionHttpStatusCode = ((HttpWebResponse)wex.Response).StatusCode;
                    if (this.ActionHttpStatusCode == HttpStatusCode.Forbidden)
                    {
                        this.ActionCode = ActionResultCode.Error_AuthError;
                    }
                    else if (this.ActionHttpStatusCode == HttpStatusCode.NotFound)
                    {
                        this.ActionCode = ActionResultCode.Error_WrongPanelPath;
                    }
                }
                else
                {
                    if (wex.Status == WebExceptionStatus.Timeout)
                    {
                        this.ActionCode = ActionResultCode.Error_ServerTimeout;
                    }
                    this.ErrorMessage = wex.Message;
                }
            }
            catch (Exception ex)
            {
                this.ActionCode    = ActionResultCode.Error_InternalProgramError;
                this.ErrorMessage  = string.Format("\r\nПроизошла внутреняя ошибка приложения: {0}\r\n----------------------\r\n", ex.Message);
                this.ErrorMessage += string.Format("Стек вызовова на момент возникновения ошибки: {0}\r\n----------------------\r\n", ex.StackTrace);
                if (!string.IsNullOrEmpty(serverAnswer))
                {
                    this.ErrorMessage += string.Format("Ответ сервера: {0}\r\n----------------------\r\n", serverAnswer);
                }
            }
        }
Пример #2
0
        protected static TResult ErrorResult <TResult>(ActionResultCode resultCode, string errorMessage, params object[] args)
            where TResult : ActionResult, new()
        {
            var actionResult = new TResult
            {
                Status  = resultCode,
                Message = string.Format(errorMessage, args)
            };

            GetLog().LogError(actionResult.Message);
            return(actionResult);
        }
Пример #3
0
 protected void ProcessResult(string _result)
 {
     if (this.ActionHttpStatusCode == HttpStatusCode.Forbidden)
     {
         this.ActionCode = ActionResultCode.Error_AuthError;
         return;
     }
     else if (this.ActionHttpStatusCode == HttpStatusCode.NotFound ||
              this.ActionHttpStatusCode == HttpStatusCode.MovedPermanently ||
              this.ActionHttpStatusCode == HttpStatusCode.Moved ||
              this.ActionHttpStatusCode == HttpStatusCode.Found)
     {
         this.ActionCode = ActionResultCode.Error_WrongPanelPath;
         return;
     }
     if (string.IsNullOrEmpty(_result))
     {
         if (this.ReturnType != ActionResultType.Any && this.ReturnType != ActionResultType.PlainText)
         {
             this.ActionCode = ActionResultCode.Error_EmptyServerAnswer;
         }
         return;
     }
     if (this.ReturnType != ActionResultType.Any && this.ReturnType != ActionResultType.PlainText)
     {
         _result = _result.Trim();
         if (this.ReturnType == ActionResultType.Xml)
         {
             if (_result.StartsWith("<?xml"))
             {
                 XmlDocument xml = new XmlDocument();
                 xml.LoadXml(_result);
                 ProcessXmlResult(xml);
             }
             else
             {
                 this.ActionCode   = ActionResultCode.Error_InvalidServerAnswer;
                 this.ErrorMessage = _result;
             }
         }
     }
     else
     {
         ProcessTextResult(_result);
     }
 }
Пример #4
0
 /// <summary>
 /// Initializes a new instance of the <see cref="ActionResult"/> class.
 /// </summary>
 /// <param name="statusCode">The status code.</param>
 /// <param name="resultCode">The results.</param>
 internal ActionResult(ExternalInterface.ResponseStatus.Types.StatusCode statusCode, ExternalInterface.ActionResult.Types.ActionResultCode resultCode)
 {
     StatusCode = statusCode.Convert();
     Result     = resultCode.Convert();
 }
Пример #5
0
 /// <summary>
 /// Initializes a new instance of the <see cref="ActionResult"/> class.
 /// </summary>
 /// <param name="statusCode">The status code.</param>
 /// <param name="results">The results.</param>
 internal ActionResult(ExternalInterface.ResponseStatus.Types.StatusCode statusCode, ExternalInterface.ActionResult.Types.ActionResultCode results)
 {
     StatusCode = (StatusCode)statusCode;
     Result     = (ActionResultCode)results;
 }
Пример #6
0
 public void SetInternalProgramError(string errorMessage)
 {
     this.ActionCode   = ActionResultCode.Error_InternalProgramError;
     this.ErrorMessage = errorMessage;
 }