예제 #1
0
파일: Gateway.cs 프로젝트: Grart/Bumblebee
 internal void OnResponseError(EventResponseErrorArgs e)
 {
     ResponseError?.Invoke(this, e);
     if (e.Result != null)
     {
         e.Response.Result(e.Result);
     }
 }
        public void Post(string apiRoute, ApiRequestContext context, int timeout)
        {
            var request = System.Net.WebRequest.Create(_domain + '/' + apiRoute);

            request.Method      = "POST";
            request.ContentType = "application/json";
            request.Timeout     = timeout;

            using (var sw = new System.IO.StreamWriter(request.GetRequestStream()))
            {
                var serializer = new JsonSerializer();
                serializer.Serialize(sw, context);
            }

            var ts = new System.Threading.ThreadStart(() => {
                try
                {
                    var response = request.GetResponse() as System.Net.HttpWebResponse;
                    using (var stream = response.GetResponseStream())
                    {
                        using (var reader = new System.IO.StreamReader(stream, Encoding.UTF8))
                        {
                            var responseString = reader.ReadToEnd();
                            var responseObject = JObject.Parse(responseString);

                            Code    = responseObject.Get <int>("Code");
                            Message = responseObject.Get <string>("Message");
                            if (Code >= 0)
                            {
                                Value = responseObject.SelectToken("Value");
                            }
                        }
                    }
                }
                catch (Exception e)
                {
                    Code    = -505;
                    Message = e.Message;
                }
                finally
                {
                    Responsed?.Invoke(this);
                }

                if (Code < 0)
                {
                    ResponseError?.Invoke(this);
                }
                else
                {
                    ResponseOK?.Invoke(this);
                }
            });

            new System.Threading.Thread(ts).Start();
        }
예제 #3
0
        internal void OnResponseError(EventResponseErrorArgs e)
        {
            if (HttpServer.EnableLog(BeetleX.EventArgs.LogType.Warring))
            {
                HttpServer.Log(BeetleX.EventArgs.LogType.Warring, $"gateway {e.Request.RemoteIPAddress} {e.Request.Method} {e.Request.Url} error {e.Message}");
            }

            HttpServer.RequestExecuted();
            ResponseError?.Invoke(this, e);
            if (e.Result != null)
            {
                e.Response.Result(e.Result);
            }
        }
        public void Execute()
        {
            try
            {
                using (var sw = new System.IO.StreamWriter(_request.GetRequestStream()))
                {
                    var serializer = new JsonSerializer();
                    serializer.Serialize(sw, _context);
                }
                var response = _request.GetResponse() as System.Net.HttpWebResponse;
                using (var stream = response.GetResponseStream())
                {
                    using (var reader = new System.IO.StreamReader(stream, Encoding.UTF8))
                    {
                        var responseString = reader.ReadToEnd();
                        var responseObject = JObject.Parse(responseString);

                        Code    = responseObject.Get <int>("Code");
                        Message = responseObject.Get <string>("Message");
                        if (Code >= 0)
                        {
                            Value = responseObject.SelectToken("Value");
                        }
                    }
                }
            }
            catch (Exception e)
            {
                Code    = -505;
                Message = e.Message;
            }
            finally
            {
                Responsed?.Invoke(this);
            }

            if (Code < 0)
            {
                ResponseError?.Invoke(this);
            }
            else
            {
                ResponseOK?.Invoke(this);
            }
        }
예제 #5
0
 /// <summary>
 /// Occurs when a response returns an error code that does not fit into any other category, or an exception occurs during the response.
 /// </summary>
 /// <param name="e">Arguments for the event.</param>
 protected virtual void OnResponseError(ResponseEventArgs e)
 {
     ResponseError?.Invoke(this, e);
 }