예제 #1
0
        /// <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)));
        }
예제 #2
0
        /// <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 void SaveSessionAsScriptingData(string fileName)
        {
            try
            {
                ScriptingApplication sd = new ScriptingApplication();

                foreach (SessionRequest req in WebSession.SessionRequests )
                {
                    if ( req.RequestType == HttpRequestType.GET )
                    {
                        GetWebRequest getRequest = new GetWebRequest((GetSessionRequest)req);
                        sd.AddWebRequest(getRequest);
                    }
                    else if ( req.RequestType == HttpRequestType.POST )
                    {
                        PostWebRequest postRequest = new PostWebRequest((PostSessionRequest)req);
                        sd.AddWebRequest(postRequest);
                    }
                }

                sd.Save(fileName);
            }
            catch ( Exception ex )
            {
                MessageBox.Show(ex.ToString());
            }
        }