コード例 #1
0
        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;
        }
コード例 #2
0
 public static WebResponse ValidateResponse( WebResponse response, WebResponseType validType, string message )
 {
     return ValidateResponse( response, new[] { validType }, message );
 }
コード例 #3
0
 /// <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 }));
 }
コード例 #4
0
 /// <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 }));
 }
コード例 #5
0
ファイル: TextWebResponse.cs プロジェクト: paulvanw/NScrape
 /// <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;
 }
コード例 #6
0
ファイル: WebResponse.cs プロジェクト: quamotion/NScrape
		/// <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;
		}
コード例 #7
0
ファイル: WebResponse.cs プロジェクト: uzbekdev1/NScrape
 /// <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;
 }
コード例 #8
0
 /// <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));
 }
コード例 #9
0
ファイル: HtmlForm.cs プロジェクト: quamotion/NScrape
 /// <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 );
 }
コード例 #10
0
ファイル: HtmlForm.cs プロジェクト: quamotion/NScrape
        /// <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 ) );
        }
コード例 #11
0
ファイル: HtmlForm.cs プロジェクト: quamotion/NScrape
 /// <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 } );
 }
コード例 #12
0
ファイル: HtmlForm.cs プロジェクト: quamotion/NScrape
 /// <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 } );
 }
コード例 #13
0
        /// <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;
        }
コード例 #14
0
 /// <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;
 }
コード例 #15
0
 protected TextWebResponse(bool success, Uri responseUrl, WebResponseType responseType, string text, Encoding encoding)
     : base(success, responseUrl, responseType)
 {
     this.text     = text;
     this.encoding = encoding;
 }