/// <summary> /// Submits the form, specifying the request data, redirection action, and a range of valid response types. /// </summary> /// <param name="requestData">Contains the request data in <b>application/x-www-form-urlencoded</b> format.</param> /// <param name="autoRedirect"><b>true</b> if the request should be automatically redirected; <b>false</b> otherwise.</param> /// <param name="validTypes">Contains a list of acceptable response types.</param> /// <returns>The response from the server.</returns> /// <remarks> /// This overload allows all form request options to be specified. /// </remarks> protected WebResponse SubmitRequest(string requestData, bool autoRedirect, WebResponseType[] validTypes) { WebRequest request; if (Attributes.ContainsKey("method") && Attributes["method"].ToUpperInvariant() == "POST") { request = new PostWebRequest(ActionUrl, requestData, autoRedirect); } else { var builder = new UriBuilder(ActionUrl) { Query = requestData, Port = -1 }; request = new GetWebRequest(builder.Uri, autoRedirect); } request.IsXmlHttpRequest = SubmitAsXmlHttpRequest; if (FormUrl != null) { request.Headers.Add(CommonHeaders.Referer, FormUrl.ToString()); } return(WebResponseValidator.ValidateResponse(WebClient.SendRequest(request), validTypes, string.Format(CultureInfo.CurrentCulture, NScrapeResources.UnexpectedResponseOnFormSubmission, request.Destination))); }
private string DownloadFormHtml() { using (var response = WebClient.SendRequest(new GetWebRequest(FormUrl))) { var htmlResponse = WebResponseValidator.ValidateHtmlResponse(response, string.Format(CultureInfo.CurrentCulture, NScrapeResources.UnexpectedResponseOnFormPageRequest, FormUrl)); FormUrl = htmlResponse.ResponseUrl; return(htmlResponse.Html); } }