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; }
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); } }