public RequestResult ProcessRequest(string url, HttpVerbs httpVerb, NameValueCollection formValues, NameValueCollection headers) { if (url == null) { throw new ArgumentNullException("url"); } if (httpVerb == HttpVerbs.Post && headers == null) { headers = new NameValueCollection(); headers.Add("content-type", "application/x-www-form-urlencoded"); } else if (httpVerb == HttpVerbs.Post && headers != null) { if (string.IsNullOrEmpty(headers["content-type"])) { headers.Add("content-type", "application/x-www-form-urlencoded"); } } // Fix up URLs that incorrectly start with / or ~/ if (url.StartsWith("~/")) { url = url.Substring(2); } else if (url.StartsWith("/")) { url = url.Substring(1); } // Parse out the querystring if provided string query = ""; int querySeparatorIndex = url.IndexOf("?"); if (querySeparatorIndex >= 0) { query = url.Substring(querySeparatorIndex + 1); url = url.Substring(0, querySeparatorIndex); } // Perform the request LastRequestData.Reset(); var output = new StringWriter(); string httpVerbName = httpVerb.ToString().ToLower(); var workerRequest = new SimulatedWorkerRequest(url, query, output, Cookies, httpVerbName, formValues, headers); HttpRuntime.ProcessRequest(workerRequest); // Capture the output AddAnyNewCookiesToCookieCollection(); Session = LastRequestData.HttpSessionState; return(new RequestResult { ResponseText = output.ToString(), ActionExecutedContext = LastRequestData.ActionExecutedContext, ResultExecutedContext = LastRequestData.ResultExecutedContext, Response = LastRequestData.Response, }); }
private RequestResult ProcessRequest(string url, HttpVerbs httpVerb, byte[] bodyData, NameValueCollection headers) { if (url == null) { throw new ArgumentNullException("url"); } // Fix up URLs that incorrectly start with / or ~/ if (url.StartsWith("~/")) { url = url.Substring(2); } else if (url.StartsWith("/")) { url = url.Substring(1); } // Parse out the querystring if provided string query = ""; int querySeparatorIndex = url.IndexOf("?", StringComparison.Ordinal); if (querySeparatorIndex >= 0) { query = url.Substring(querySeparatorIndex + 1); url = url.Substring(0, querySeparatorIndex); } // Perform the request LastRequestData.Reset(); var output = new StringWriter(); string httpVerbName = httpVerb.ToString().ToUpperInvariant(); var workerRequest = new SimulatedWorkerRequest(url, query, output, Cookies, httpVerbName, bodyData, headers); HttpRuntime.ProcessRequest(workerRequest); // Capture the output AddAnyNewCookiesToCookieCollection(); Session = LastRequestData.HttpSessionState; // In the case of errors, try to pull out some useful info from the HttpContext var response = LastRequestData.Response ?? RecoverResponseData(LastRequestData.ActionExecutedContext, workerRequest); return(new RequestResult { ResponseText = output.ToString(), ActionExecutedContext = LastRequestData.ActionExecutedContext, ResultExecutedContext = LastRequestData.ResultExecutedContext, Response = response }); }
private RequestResult ProcessRequest(string url, HttpVerbs httpVerb, object formValues, NameValueCollection headers) { var formNameValueCollection = NameValueCollectionConversions.ConvertFromObject(formValues); if (url == null) { throw new ArgumentNullException("url"); } // Fix up URLs that incorrectly start with / or ~/ if (url.StartsWith("~/")) { url = url.Substring(2); } else if (url.StartsWith("/")) { url = url.Substring(1); } // Parse out the querystring if provided var query = ""; var querySeparatorIndex = url.IndexOf("?", StringComparison.Ordinal); if (querySeparatorIndex >= 0) { query = url.Substring(querySeparatorIndex + 1); url = url.Substring(0, querySeparatorIndex); } // Perform the request LastRequestData.Reset(); var output = new StringWriter(); var httpVerbName = httpVerb.ToString().ToLower(); var workerRequest = new SimulatedWorkerRequest(url, query, output, Cookies, httpVerbName, formNameValueCollection, headers); HttpRuntime.ProcessRequest(workerRequest); // Capture the output AddAnyNewCookiesToCookieCollection(); Session = LastRequestData.HttpSessionState; return(new RequestResult { ResponseText = output.ToString(), ActionExecutedContext = LastRequestData.ActionExecutedContext, ResultExecutedContext = LastRequestData.ResultExecutedContext, Response = LastRequestData.Response, }); }
private HttpResponse RecoverResponseData(ControllerContext ctx, SimulatedWorkerRequest workerRequest) { if (ctx == null || ctx.HttpContext == null || ctx.HttpContext.Response == null) { return(new HttpResponse(TextWriter.Null) { StatusCode = workerRequest.LastStatusCode, StatusDescription = workerRequest.LastStatusDescription }); } var orig = ctx.HttpContext.Response; return(new HttpResponse(TextWriter.Null) { StatusCode = orig.StatusCode, Charset = orig.Charset, ContentType = orig.ContentType, RedirectLocation = orig.RedirectLocation }); }
//public RequestResult Get(string url) //{ // return ProcessRequest(url, HttpVerbs.Get, new NameValueCollection()); //} ///// <summary> ///// Sends a post to your url. Url should NOT start with a / ///// </summary> ///// <param name="url"></param> ///// <param name="formData"></param> ///// <example> ///// <code> ///// var result = Post("registration/create", new ///// { ///// Form = new ///// { ///// InvoiceNumber = "10000", ///// AmountDue = "10.00", ///// Email = "*****@*****.**", ///// Password = "******", ///// ConfirmPassword = "******" ///// } ///// }); ///// </code> ///// </example> //public RequestResult Post(string url, object formData) //{ // var formNameValueCollection = NameValueCollectionConversions.ConvertFromObject(formData); // return ProcessRequest(url, HttpVerbs.Post, formNameValueCollection); //} public RequestResult ProcessRequest(WorkerRequestSettings rqstSettings) { string url = rqstSettings.Url; // Perform the request LastRequestData.Reset(); var output = new StringWriter(); string httpVerbName = rqstSettings.httpMethodName.ToLower(); var workerRequest = new SimulatedWorkerRequest(rqstSettings, output); HttpRuntime.ProcessRequest(workerRequest); // Capture the output AddAnyNewCookiesToCookieCollection(); Session = LastRequestData.HttpSessionState; return new RequestResult { ResponseText = output.ToString(), ActionExecutedContext = LastRequestData.ActionExecutedContext, ResultExecutedContext = LastRequestData.ResultExecutedContext, Response = LastRequestData.Response, }; }
//public RequestResult Get(string url) //{ // return ProcessRequest(url, HttpVerbs.Get, new NameValueCollection()); //} ///// <summary> ///// Sends a post to your url. Url should NOT start with a / ///// </summary> ///// <param name="url"></param> ///// <param name="formData"></param> ///// <example> ///// <code> ///// var result = Post("registration/create", new ///// { ///// Form = new ///// { ///// InvoiceNumber = "10000", ///// AmountDue = "10.00", ///// Email = "*****@*****.**", ///// Password = "******", ///// ConfirmPassword = "******" ///// } ///// }); ///// </code> ///// </example> //public RequestResult Post(string url, object formData) //{ // var formNameValueCollection = NameValueCollectionConversions.ConvertFromObject(formData); // return ProcessRequest(url, HttpVerbs.Post, formNameValueCollection); //} public RequestResult ProcessRequest(WorkerRequestSettings rqstSettings) { string url = rqstSettings.Url; // Perform the request LastRequestData.Reset(); var output = new StringWriter(); string httpVerbName = rqstSettings.httpMethodName.ToLower(); var workerRequest = new SimulatedWorkerRequest(rqstSettings, output); HttpRuntime.ProcessRequest(workerRequest); // Capture the output AddAnyNewCookiesToCookieCollection(); Session = LastRequestData.HttpSessionState; return(new RequestResult { ResponseText = output.ToString(), ActionExecutedContext = LastRequestData.ActionExecutedContext, ResultExecutedContext = LastRequestData.ResultExecutedContext, Response = LastRequestData.Response, }); }
public RequestResult ProcessRequest(string url, HttpVerbs httpVerb, NameValueCollection formValues, NameValueCollection headers) { if (url == null) throw new ArgumentNullException("url"); // Fix up URLs that incorrectly start with / or ~/ if (url.StartsWith("~/")) url = url.Substring(2); else if(url.StartsWith("/")) url = url.Substring(1); // Parse out the querystring if provided string query = ""; int querySeparatorIndex = url.IndexOf("?"); if (querySeparatorIndex >= 0) { query = url.Substring(querySeparatorIndex + 1); url = url.Substring(0, querySeparatorIndex); } // Perform the request LastRequestData.Reset(); var output = new StringWriter(); string httpVerbName = httpVerb.ToString().ToLower(); var workerRequest = new SimulatedWorkerRequest(url, query, output, Cookies, httpVerbName, formValues, headers); HttpRuntime.ProcessRequest(workerRequest); // Capture the output AddAnyNewCookiesToCookieCollection(); Session = LastRequestData.HttpSessionState; return new RequestResult { ResponseText = output.ToString(), ActionExecutedContext = LastRequestData.ActionExecutedContext, ResultExecutedContext = LastRequestData.ResultExecutedContext, Response = LastRequestData.Response, }; }