public static WebResponse ValidateResponse( WebResponse response, WebResponseType[] validTypes, string message ) { var valid = false; foreach ( var responseType in validTypes ) { if ( response.ResponseType == responseType ) { valid = true; break; } } if ( !valid ) { throw UnexpectedWebResponseGenerator.CreateException( message, response ); } return response; }
public static WebResponse ValidateResponse( WebResponse response, WebResponseType validType, string message ) { return ValidateResponse( response, new[] { validType }, message ); }
/// <summary> /// Submits the form, specifying the request data and the expected response type. /// </summary> /// <param name="requestData">Contains the request data in <b>application/x-www-form-urlencoded</b> format.</param> /// <param name="validType">Contains the expected response type.</param> /// <returns>The response from the server.</returns> /// <remarks> /// This overload is convenient for forms that are known to return a specific response type. Requests shall be automatically redirected if necessary. /// </remarks> protected WebResponse SubmitRequest(string requestData, WebResponseType validType) { return(SubmitRequest(requestData, true, new[] { validType })); }
/// <summary> /// Submits the form, specifying the request data, redirection action, and the expected response type. /// </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="validType">Contains the expected response type.</param> /// <returns>The response from the server.</returns> /// <remarks> /// This overload is convenient when the redirection action needs to be specified. /// </remarks> protected WebResponse SubmitRequest(string requestData, bool autoRedirect, WebResponseType validType) { return(SubmitRequest(requestData, autoRedirect, new[] { validType })); }
/// <summary> /// Initializes a new instance of the <see cref="TextWebResponse"/> class. /// </summary> /// <param name="responseUrl">The URL of the response.</param> /// <param name="responseType">The type of response.</param> /// <param name="success"><b>true</b> if the response is considered successful, <b>false</b> otherwise.</param> /// <param name="text">The text of the response.</param> /// <param name="encoding">The encoding of the text.</param> protected TextWebResponse( Uri responseUrl, WebResponseType responseType, bool success, string text, Encoding encoding ) : base(responseUrl, responseType, success) { this.text = text; this.encoding = encoding; }
/// <summary> /// Initializes a new instance of the <see cref="WebResponse"/> class. /// </summary> /// <param name="success"><b>true</b> if the response is considered successful, <b>false</b> otherwise.</param> /// <param name="responseUrl">The URL of the response.</param> /// <param name="responseType">The type of response.</param> protected WebResponse( bool success, Uri responseUrl, WebResponseType responseType ) { this.responseUrl = responseUrl; this.responseType = responseType; this.success = success; }
/// <summary> /// Initializes a new instance of the <see cref="WebResponse"/> class. /// </summary> /// <param name="success"><b>true</b> if the response is considered successful, <b>false</b> otherwise.</param> /// <param name="responseUrl">The URL of the response.</param> /// <param name="responseType">The type of response.</param> protected WebResponse(bool success, Uri responseUrl, WebResponseType responseType) { this.responseUrl = responseUrl; this.responseType = responseType; this.success = success; }
/// <summary> /// Validates a <see cref="WebResponse"/> to be of a given type. /// </summary> /// <param name="response">The web response to be validated.</param> /// <param name="validType">The valid web response type.</param> /// <param name="message">The error message to be used to generate an exception if the validation fails.</param> /// <returns>The web response.</returns> public static WebResponse ValidateResponse(WebResponse response, WebResponseType validType, string message) { return(ValidateResponse(response, new[] { validType }, message)); }
/// <summary> /// Submits the form, specifying the request data 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="validTypes">Contains a list of acceptable response types.</param> /// <returns>The response from the server.</returns> /// <remarks> /// This overload is convenient when multiple response types are possible. Requests shall be automatically redirected if necessary. /// </remarks> protected WebResponse SubmitRequest( string requestData, WebResponseType[] validTypes ) { return SubmitRequest( requestData, true, validTypes ); }
/// <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 ) ); }
/// <summary> /// Submits the form, specifying the request data, redirection action, and the expected response type. /// </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="validType">Contains the expected response type.</param> /// <returns>The response from the server.</returns> /// <remarks> /// This overload is convenient when the redirection action needs to be specified. /// </remarks> protected WebResponse SubmitRequest( string requestData, bool autoRedirect, WebResponseType validType ) { return SubmitRequest( requestData, autoRedirect, new[] { validType } ); }
/// <summary> /// Submits the form, specifying the request data and the expected response type. /// </summary> /// <param name="requestData">Contains the request data in <b>application/x-www-form-urlencoded</b> format.</param> /// <param name="validType">Contains the expected response type.</param> /// <returns>The response from the server.</returns> /// <remarks> /// This overload is convenient for forms that are known to return a specific response type. Requests shall be automatically redirected if necessary. /// </remarks> protected WebResponse SubmitRequest( string requestData, WebResponseType validType ) { return SubmitRequest( requestData, true, new[] { validType } ); }
/// <summary> /// Validates a <see cref="WebResponse"/> to be of a given range of types. /// </summary> /// <param name="response">The web response to be validated.</param> /// <param name="validTypes">The range of valid web response types.</param> /// <param name="message">The error message to be used to generate an exception if the validation fails.</param> /// <returns>The web response.</returns> /// <exception cref="Exception">The web response is not valid.</exception> public static WebResponse ValidateResponse( WebResponse response, WebResponseType[] validTypes, string message ) { var valid = validTypes.Any( t => response.ResponseType == t ); if ( !valid ) { throw UnexpectedWebResponseGenerator.CreateException( message, response ); } return response; }
/// <summary> /// Initializes a new instance of the <see cref="TextWebResponse"/> class. /// </summary> /// <param name="success"><b>true</b> if the response is considered successful, <b>false</b> otherwise.</param> /// <param name="responseType">The type of response.</param> /// <param name="webResponse">The web response object.</param> protected TextWebResponse(bool success, WebResponseType responseType, HttpWebResponse webResponse) : base(success, webResponse.ResponseUri, responseType) { this.webResponse = webResponse; }
protected TextWebResponse(bool success, Uri responseUrl, WebResponseType responseType, string text, Encoding encoding) : base(success, responseUrl, responseType) { this.text = text; this.encoding = encoding; }