internal RequestEndArg(ResponseMediator mediator, IRequest client, Uri url, object contentData, RequestMethod requestType)
 {
     this.Request     = client;
     this.Url         = url;
     this.ContentData = contentData;
     this.RequestType = requestType;
     _mediator        = mediator;
 }
 public RequestException(Exception ex, IRequest client, ResponseMediator response, Uri url, object contentData, RequestMethod requestType)
 {
     this.Request     = client;
     this.Url         = url;
     this.ContentData = contentData;
     this.RequestType = requestType;
     this.Exception   = ex;
     this._mediator   = response;
 }
Exemple #3
0
        public Response GetResponse(RequestMethod method, object data)
        {
            Response result = null;

            try
            {
                var rdata = data;
                var rtype = method;
                this.CallObserver(ob => ob.OnRequest(new RequestStartArg(this, Url, rdata, rtype)));
                var request = WebRequest.CreateHttp(Url);
                request.Method  = method.ToString().ToUpper();
                request.Timeout = Timeout;
                AddHeader(request);
                request.PreAuthenticate = PreAuthenticate;
                if (Ssl)
                {
                    request.ServerCertificateValidationCallback = (sender, certificate, chain, errors) => true;
                }
                request.CookieContainer = new CookieContainer();
                foreach (var cookie in this.Cookies)
                {
                    request.CookieContainer.Add(Url, new System.Net.Cookie(cookie.Name, cookie.Value));
                }
                if (!IsNonBodyMethod(method))
                {
                    var stream = request.GetRequestStream();
                    var bytes  = GetBytes(data);
                    stream.Write(bytes, 0, bytes.Length);
                }
                result      = GetWebResponse((HttpWebResponse)request.GetResponse());
                ReferrerUri = result.Uri;
                var resultmedator = new ResponseMediator(result);
                this.CallObserver(
                    observer =>
                    observer.OnResponse(new RequestEndArg(resultmedator, this, Url, rdata, rtype)));
                return(resultmedator.Response);
            }
            catch (WebException exception)
            {
                result = GetWebResponse((HttpWebResponse)exception.Response);
                var responseMediator = new ResponseMediator(result);
                this.CallObserver(observer => observer.OnException(new RequestException(exception, this, responseMediator, Url, data, method)));
                return(responseMediator.Response);
            }
        }