/// <summary> /// Returns the http properties from the property grid. /// </summary> /// <returns> A HttpProperties.</returns> public HttpProperties GetHttpProperties() { HttpProperties props = new HttpProperties(); PropertyTable bag = (PropertyTable)this.pgHeaders.SelectedObject; props.Accept = (string)bag["Accept"]; if ( this.RequestHeaders.AuthenticationSettings.UseBasicAuthentication ) { props.AuthenticationSettings = this.RequestHeaders.AuthenticationSettings; } else { props.AuthenticationSettings.UseNTLMAuthentication = this.RequestHeaders.AuthenticationSettings.UseNTLMAuthentication; } props.ContentLength = Convert.ToInt64(bag["Content Length"]); props.ContentType = (string)bag["Content Type"]; props.IfModifiedSince = Convert.ToDateTime(bag["If Modified Since"]); props.KeepAlive = (bool)bag["Keep Alive"]; props.MediaType = (string)bag["Media Type"]; props.Pipeline = (bool)bag["Pipeline"]; props.Referer = (string)bag["Referer"]; props.SendChunked = (bool)bag["Send Chunked"]; props.TransferEncoding = (string)bag["Transfer Encoding"]; props.UserAgent = (string)bag["User Agent"]; props.Timeout = (int)bag["Timeout"]; return props; }
/// <summary> /// Creates a new InspectorPipelineCommand. /// </summary> /// <param name="clientSettings"> The HTTP Properties.</param> /// <param name="proxySettings"> The HTTP Proxy settings.</param> /// <param name="httpState"> The HTTP State.</param> /// <param name="callback"> The callback method.</param> public InspectorPipelineCommand(HttpProperties clientSettings, HttpProxy proxySettings, HttpState httpState, Delegate callback) { Initialize(); inspectorPipeline.ClientSettings = clientSettings; inspectorPipeline.ProxySettings = proxySettings; HttpStateData = httpState; CallbackMethod = callback; }
/// <summary> /// Fills the ResponseBuffer. /// </summary> /// <param name="response"> The HttpWebResponse type.</param> /// <param name="hwr"> The HttpWebRequest type.</param> /// <param name="clientSettings"> The http settings.</param> /// <param name="httpState"> The Http state.</param> /// <returns> A ResponseBuffer type.</returns> internal static ResponseBuffer FillResponseBuffer(HttpWebResponse response, HttpWebRequest hwr, HttpProperties clientSettings, HttpState httpState) { ResponseBuffer respBuffer = null; if ( CompareString.Compare(hwr.Method,"get") ) { respBuffer = new ResponseBuffer(HttpRequestType.GET); } else { respBuffer = new ResponseBuffer(HttpRequestType.POST); } respBuffer.StatusCode = (int)response.StatusCode; respBuffer.StatusDescription=response.StatusDescription; if ( response.ProtocolVersion == HttpVersion.Version11 ) { respBuffer.Version="1.1"; } else { respBuffer.Version="1.0"; } // Request Header Collection BufferBuilder.FillRequestHeader(respBuffer,hwr.Headers,hwr); // Header Collection BufferBuilder.FillResponseHeader(respBuffer,hwr,response.Headers,response); // Cookie collection response.Cookies = hwr.CookieContainer.GetCookies(hwr.RequestUri); BufferBuilder.FillCookieData(respBuffer,response.Cookies); Stream stm = response.GetResponseStream(); BufferBuilder.FillHttpBody(respBuffer,stm); stm.Close(); if ( response!=null ) { response.Close(); } return respBuffer; }
/// <summary> /// Creates a new SoftTestCommand. /// </summary> /// <param name="url"> The url to apply the test.</param> /// <param name="form"> The form to apply the tests.</param> /// <param name="proxySettings"> The http proxy settings.</param> /// <param name="httpProperties"> The http settings.</param> /// <param name="sqlTest"> The sql test to use.</param> /// <param name="xssTest"> The xss test to use.</param> /// <param name="bufferLength"> The buffer overflow length to use.</param> public SoftTestCommand(Uri url, HtmlFormTag form, HttpProxy proxySettings, HttpProperties httpProperties, string sqlTest, string xssTest, int bufferLength) : this() { this._xssSignature = xssTest; this._sqlSignature = sqlTest; this._bufferLen = bufferLength; this.Url = url; this.FormTag = form; this.Proxy = proxySettings; this.ProtocolProperties = httpProperties; // updateElementNames.Add("__VIEWSTATE"); // updateElementNames.Add("__EVENTTARGET"); }
/// <summary> /// Adds the request headers to the report. /// </summary> /// <param name="parentRow"> The ResponseDocumentRow.</param> /// <param name="report"> The HtmlUnitTestReport type.</param> /// <param name="responseBuffer"> The response buffer.</param> /// <param name="httpProperties"> The Http Properties type.</param> private void AddRequestHeaders(HtmlUnitTestReport.ResponseDocumentRow parentRow,HtmlUnitTestReport report, ResponseBuffer responseBuffer, HttpProperties httpProperties) { Ecyware.GreenBlue.ReportEngine.HtmlUnitTestReport.RequestHeaderRow reqHeaderRow = report.RequestHeader.NewRequestHeaderRow(); reqHeaderRow.SetParentRow(parentRow); report.RequestHeader.AddRequestHeaderRow(reqHeaderRow); Ecyware.GreenBlue.ReportEngine.HtmlUnitTestReport.RequestItemsRow row = null; if ( httpProperties.Accept != null ) { row = report.RequestItems.NewRequestItemsRow(); row.Name = "Accept"; row.Value = httpProperties.Accept; row.SetParentRow(reqHeaderRow); report.RequestItems.AddRequestItemsRow(row); } row = report.RequestItems.NewRequestItemsRow(); row.Name = "Content length"; row.Value = httpProperties.ContentLength.ToString(); row.SetParentRow(reqHeaderRow); report.RequestItems.AddRequestItemsRow(row); if ( httpProperties.ContentType != null ) { row = report.RequestItems.NewRequestItemsRow(); row.Name = "Content type"; row.Value = httpProperties.ContentType; row.SetParentRow(reqHeaderRow); report.RequestItems.AddRequestItemsRow(row); } row = report.RequestItems.NewRequestItemsRow(); row.Name = "If modified since"; row.Value = httpProperties.IfModifiedSince.ToString(); row.SetParentRow(reqHeaderRow); report.RequestItems.AddRequestItemsRow(row); row = report.RequestItems.NewRequestItemsRow(); row.Name = "Keep alive"; row.Value = httpProperties.KeepAlive.ToString(); row.SetParentRow(reqHeaderRow); report.RequestItems.AddRequestItemsRow(row); if ( httpProperties.MediaType != null ) { row = report.RequestItems.NewRequestItemsRow(); row.Name = "Media type"; row.Value = httpProperties.MediaType; row.SetParentRow(reqHeaderRow); report.RequestItems.AddRequestItemsRow(row); } row = report.RequestItems.NewRequestItemsRow(); row.Name = "Pipeline"; row.Value = httpProperties.Pipeline.ToString(); row.SetParentRow(reqHeaderRow); report.RequestItems.AddRequestItemsRow(row); if ( httpProperties.Referer != null ) { row = report.RequestItems.NewRequestItemsRow(); row.Name = "Referer"; row.Value = httpProperties.Referer; row.SetParentRow(reqHeaderRow); report.RequestItems.AddRequestItemsRow(row); } row = report.RequestItems.NewRequestItemsRow(); row.Name = "Send chunked"; row.Value = httpProperties.SendChunked.ToString(); row.SetParentRow(reqHeaderRow); report.RequestItems.AddRequestItemsRow(row); if ( httpProperties.TransferEncoding != null ) { row = report.RequestItems.NewRequestItemsRow(); row.Name = "Transfer encoding"; row.Value = httpProperties.TransferEncoding; row.SetParentRow(reqHeaderRow); report.RequestItems.AddRequestItemsRow(row); } if ( httpProperties.UserAgent != null ) { row = report.RequestItems.NewRequestItemsRow(); row.Name = "User agent"; row.Value = httpProperties.UserAgent; row.SetParentRow(reqHeaderRow); report.RequestItems.AddRequestItemsRow(row); } }
/// <summary> /// Fills the workspace with data retrieve from site. /// </summary> /// <param name="response">ResponseBuffer</param> public void FillWorkspace(ResponseBuffer response) { if (response.ErrorMessage != String.Empty) { // reset statusbar ChangeStatusBarPanelEvent(this, CleanStatusArgs); this.txtMessaging.SelectionColor = Color.Red; this.txtMessaging.SelectedText = "Html Browser Error: " + response.ErrorMessage + "\r\n"; // Show Error textViewerForm.EditorText = response.ErrorMessage; // Stop progress this.StopProgressBarEvent(this, new ProgressBarControlEventArgs("Ready")); this.InspectorState = GBInspectorState.Error; } else { // Set Editor Text try { textViewerForm.EditorText = response.HttpBody; // save buffer, do not save before error message check this.CurrentResponseBuffer = response; // load forms editor if any if ( formCollection != null ) { DisplayForms(formCollection, false); } Uri responseUri = (Uri)response.ResponseHeaderCollection["Response Uri"]; // Get Settings from Panel ClientProperties = this.GetHttpPropertiesFromPanel(); // Update referer ClientProperties.Referer = responseUri.ToString(); // Load properties LoadHttpProperties(this.ClientProperties); // Add to history AddToHistory(response); // // Add to cookies // cookieManager.AddCookies(response.CookieCollection); // Fill Lists FillListViews(response); FillCookieListView(response.CookieCollection); // Update address bar RequestGetEventArgs requestArgs = new RequestGetEventArgs(); requestArgs.Url = responseUri.ToString(); this.UpdateAddressEvent(this, requestArgs); // Update Session Request UpdateSessionRequest(response); EnableFormView(); this.InspectorState = GBInspectorState.Complete; // Stop progress only if navigator CanLinkNavigate is true. if ( navForm.CanLinkNavigate ) { // reset statusbar ChangeStatusBarPanelEvent(this, CleanStatusArgs); // stop progress bar this.StopProgressBarEvent(this,new ProgressBarControlEventArgs("Ready")); } // Location is found in Hashtable if ( response.ResponseHeaderCollection.ContainsKey("Location") ) { // Location is not empty if ( ((string)response.ResponseHeaderCollection["Location"])!=String.Empty ) { // Apply direct and log in recording sesion if any. this.ApplyUrlRedirection(); // navForm.PendingRedirection = true; //ChangeStatusBarPanelEvent(this,RedirectMessageArgs); } } } catch (Exception ex) { string message = ExceptionHandler.RegisterException(ex); MessageBox.Show(message,AppLocation.ApplicationName, MessageBoxButtons.OK,MessageBoxIcon.Error); } } }
/// <summary> /// Loads the application options. /// </summary> /// <param name="sender"> The sender object.</param> /// <param name="e"> The event arguments.</param> private void LoadApplicationOptions(object sender, EventArgs e) { ApplicationOptions appOptions = new ApplicationOptions(); appOptions.ClientSettings = ClientProperties; appOptions.ApplicationSettings = InspectorConfig; if ( appOptions.ShowDialog() == DialogResult.OK ) { ClientProperties = appOptions.ClientSettings; InspectorConfig = appOptions.ApplicationSettings; } LoadApplicationProperties(InspectorConfig); LoadHttpProperties(ClientProperties); }
/// <summary> /// Initializes the form. /// </summary> private void InitializeForm() { // sets the IsUnique for the tab document this.IsUnique = true; // init settings types this.SnifferProperties = new SnifferOptions(); // get settings InspectorConfig = (InspectorConfiguration)ConfigManager.Read("greenBlue/inspector", false); ClientProperties = (HttpProperties)ConfigManager.Read("greenBlue/httpClient", false); // Load Application Properties LoadApplicationProperties(InspectorConfig); // Load Http Properties LoadHttpProperties(ClientProperties); // Init Get and Post Command InitializeHttpCommands(); // Start event for GBInspectorWorkspace this.StartEventDelegate += new InspectorStartRequestEventHandler(InspectorStartGetEvent); this.CancelEventDelegate += new InspectorCancelRequestEventHandler(InspectorCancelRequestEvent); // get request event textViewerForm.StartEvent += new InspectorStartRequestEventHandler(InspectorStartGetEvent); // Context menu textViewerForm.txtEditor.ContextMenu = this.mnuTextStream; textViewerForm.txtEditor.TextChanged += new EventHandler(txtHTTPStream_TextChanged); textViewerForm.txtEditor.CaretChange += new EventHandler(txtEditor_CaretChange); // Create browser navForm = new NavigableWebForm(); AttachWebFormEvents(navForm); // Add browser DocumentManager.Document navigatorDoc = new DocumentManager.Document(navForm,"Web Browser"); dmDocuments.AddDocument(navigatorDoc); // Add Html Text Editor htmlEditorDocument = new DocumentManager.Document(textViewerForm,"Html Browser"); dmDocuments.AddDocument(htmlEditorDocument); // Load History Tree this.sitesTree.ImageList = this.imgIcons; this.sitesTree.IconNodeIndex = 1; this.sitesTree.IconSiteIndex = 7; this.sitesTree.LoadHistoryTree(); }
/// <summary> /// Get Async get request. /// </summary> /// <param name="getUrl"> The url.</param> /// <param name="values"> The get values.</param> /// <param name="cookies"> The cookies.</param> /// <param name="state"> The http state.</param> private void StartGetRequest(GetForm httpCommand, string getUrl, ArrayList values, CookieCollection cookies, HttpProperties settings, HttpState state) { try { httpCommand.StartAsyncHttpGet( getUrl, settings, values, cookies, state, false); } catch (Exception ex) { // register and show ExceptionHandler.RegisterException(ex); AbortSessionRun(ex.Message); } }
/// <summary> /// Begins a new asynchronous HTTP Get request. This function is not thread safe. /// </summary> /// <param name="uri"> An uri to request.</param> /// <param name="properties"> The HttpProperties to set for the request.</param> /// <param name="values"> The values to include for a GET request.</param> /// <param name="cookies"> The cookies to set for the request.</param> /// <param name="httpRequestState"> The HttpState.</param> public ResponseBuffer StartSyncHttpGet(string uri, HttpProperties properties, ArrayList values, CookieCollection cookies, HttpState httpRequestState) { uri = EncodeDecode.UrlDecode(uri); uri = EncodeDecode.HtmlDecode(uri); try { //this.ValidateIPAddress(new Uri(uri)); if ( values != null ) uri = AppendToUri(uri,values); httpRequestState.HttpRequest = (HttpWebRequest)WebRequest.Create(uri); // Set HttpWebRequestProperties SetHttpWebRequestProperties(httpRequestState.HttpRequest, properties); // Apply proxy settings if ( this.ProxySettings != null ) { SetProxy(httpRequestState.HttpRequest,this.ProxySettings); } // save cookies httpRequestState.HttpRequest.CookieContainer=new CookieContainer(); if ( cookies!=null ) { httpRequestState.HttpRequest.CookieContainer.Add(cookies); } HttpWebResponse httpResponse = (HttpWebResponse)httpRequestState.HttpRequest.GetResponse(); httpRequestState.HttpResponse = httpResponse; // get ResponseBuffer ResponseBuffer responseBuffer = HttpPipeline.FillResponseBuffer(httpResponse, httpRequestState.HttpRequest, properties, httpRequestState); return responseBuffer; } catch { throw; } finally { if ( httpRequestState.HttpResponse != null ) { httpRequestState.HttpResponse.Close(); } } }
/// <summary> /// Sets the HttpWebRequest properties. /// </summary> /// <param name="hwr"> The HttpWebRequest type.</param> /// <param name="properties"> The HttpProperties type that contains the values to set.</param> protected void SetHttpWebRequestProperties(HttpWebRequest hwr, HttpProperties properties) { // SSL/TLS Certificates Policy Settings ServicePointManager.CertificatePolicy = new SSLCertificatePolicy(); // Security Protocol Settings ServicePointManager.SecurityProtocol = properties.SecurityProtocol; this.ClientSettings = properties; hwr.AllowAutoRedirect = properties.AllowAutoRedirects; hwr.MaximumAutomaticRedirections = properties.MaximumAutoRedirects; hwr.AllowWriteStreamBuffering = properties.AllowWriteStreamBuffering; hwr.UserAgent = properties.UserAgent; hwr.Pipelined = properties.Pipeline; hwr.SendChunked = properties.SendChunked; hwr.KeepAlive = properties.KeepAlive; hwr.Accept = properties.Accept; if ( properties.ContentLength > -1 ) { hwr.ContentLength = properties.ContentLength; } hwr.ContentType = properties.ContentType; hwr.IfModifiedSince = properties.IfModifiedSince; hwr.MediaType = properties.MediaType; hwr.TransferEncoding = properties.TransferEncoding; hwr.Referer= properties.Referer; foreach ( WebHeader wh in properties.AdditionalHeaders ) { hwr.Headers.Add(wh.Name, wh.Value); } // authentication HttpAuthentication auth = properties.AuthenticationSettings; // set Windows NTLM security if ( auth.UseNTLMAuthentication ) { hwr.Credentials = CredentialCache.DefaultCredentials; hwr.UnsafeAuthenticatedConnectionSharing = true; } else { // use basic authentication if ( auth.UseBasicAuthentication ) { if ( auth.Domain != String.Empty ) { hwr.Credentials=new NetworkCredential(auth.Username,auth.Password,auth.Domain); } else { hwr.Credentials=new NetworkCredential(auth.Username,auth.Password); } } } }
/// <summary> /// Loads scripts with SRC attribute and adds it to the Script Collection in ResponseBuffer. /// </summary> /// <param name="requestUrl"> The top url.</param> /// <param name="response"> The ResponseBuffer.</param> /// <param name="clientSettings"> The http settings.</param> /// <returns> An updated ResponseBuffer.</returns> internal static ResponseBuffer LoadScriptsFromSrc(Uri requestUrl,ResponseBuffer response,HttpProperties clientSettings) { GetForm http = new GetForm(); HtmlScriptCollection scripts = response.Scripts; for (int i=0;i<scripts.Count;i++) { if ( scripts[i].Source.Length!=0 ) { string src = scripts[i].Source; string requestData = string.Empty; requestData = UriResolver.ResolveUrl(requestUrl,src); // add User Agent clientSettings.UserAgent = "Mozilla/4.0 (compatible; MSIE 6.0)"; try { // load ResponseBuffer result = http.StartSyncHttpGet(requestData,clientSettings,null,response.CookieCollection); scripts[i].Text = result.HttpBody; } catch (Exception ex) { // TODO: Log this errors as SCRIPT loading failed error System.Diagnostics.Debug.Write(ex.Message); } } } return response; }
/// <summary> /// Creates a new HttpPropertiesWrapper. /// </summary> /// <param name="httpProperties"> The HttpProperties object to wrap.</param> public HttpPropertiesWrapper(HttpProperties httpProperties) { _httpProperties = httpProperties; }
/// <summary> /// Redirects to url. /// </summary> /// <param name="state"> The HTTP State.</param> /// <param name="cookies"> The cookie collection.</param> /// <param name="settings"> The HTTP Settings.</param> /// <param name="url"> The url to redirect to.</param> private void ApplyUrlRedirection(HttpState state, CookieCollection cookies,HttpProperties settings, string url) { this.DisplaySessionProcessEvent(this, new SessionCommandProcessEventArgs("Requesting " + url)); // Request, we only use url, http settings and cookies, because // IE doesn't returns and arraylist of values for GET requests. this.StartGetRequest(safeSessionGetRequest,url,null, cookies, settings, state); }
/// <summary> /// Get Async post request. /// </summary> /// <param name="postUrl"> The url to post.</param> /// <param name="listValues"> The post data values.</param> /// <param name="cookies"> The cookies.</param> /// <param name="state"> The http state.</param> private void StartPostRequest(PostForm httpCommand, string postUrl, ArrayList listValues, CookieCollection cookies,HttpProperties settings, HttpState state) { try { httpCommand.StartAsyncHttpPost( postUrl, settings, listValues, cookies, state); } catch (Exception ex) { // register and show ExceptionHandler.RegisterException(ex); AbortSessionRun(ex.Message); } }
/// <summary> /// Loads the http properties. /// </summary> /// <param name="httpProperties"> The HttpProperties type.</param> public void LoadHttpProperties(HttpProperties httpProperties) { this.RequestHeaders = httpProperties; PropertyTable bag = new PropertyTable(); string category = "Request Headers"; // string category2 = "Authentication"; //PropertySpec item = new PropertySpec("Headers",typeof(HttpPropertiesWrapper),category,"Request Headers"); PropertySpec accept = new PropertySpec("Accept", typeof(string),category); PropertySpec contentLength = new PropertySpec("Content Length",typeof(string), category); PropertySpec contentType = new PropertySpec("Content Type",typeof(string), category); PropertySpec ifModifiedSince = new PropertySpec("If Modified Since",typeof(DateTime), category); PropertySpec keepAlive = new PropertySpec("Keep Alive",typeof(bool), category); PropertySpec mediaType = new PropertySpec("Media Type",typeof(string), category); PropertySpec pipeline = new PropertySpec("Pipeline",typeof(bool), category); PropertySpec referer = new PropertySpec("Referer",typeof(string), category); PropertySpec sendChunked = new PropertySpec("Send Chunked",typeof(bool), category); PropertySpec transferEncoding = new PropertySpec("Transfer Encoding",typeof(string), category); PropertySpec userAgent = new PropertySpec("User Agent",typeof(string), category); PropertySpec timeout = new PropertySpec("Timeout",typeof(int), category); // PropertySpec addonHeaders = new PropertySpec("Additional headers",typeof(string[]), category); // PropertySpec ntlmAuth = new PropertySpec("Windows Integrated Security", typeof(bool), category2); // accept.ConverterTypeName = "Ecyware.GreenBlue.Controls.HttpPropertiesWrapper"; bag.Properties.AddRange(new PropertySpec[] {accept, contentLength, contentType, ifModifiedSince, keepAlive, mediaType, pipeline, referer, sendChunked, transferEncoding, userAgent, timeout}); bag[accept.Name] = httpProperties.Accept; bag[contentLength.Name] = httpProperties.ContentLength; bag[contentType.Name] = httpProperties.ContentType; bag[ifModifiedSince.Name] = httpProperties.IfModifiedSince; bag[keepAlive.Name] = httpProperties.KeepAlive; bag[mediaType.Name] = httpProperties.MediaType; bag[pipeline.Name] = httpProperties.Pipeline; bag[referer.Name] = httpProperties.Referer; bag[sendChunked.Name] = httpProperties.SendChunked; bag[transferEncoding.Name] = httpProperties.TransferEncoding; bag[userAgent.Name] = httpProperties.UserAgent; bag[timeout.Name] = httpProperties.Timeout; //bag[addonHeaders.Name] = new string[0]; // bag[ntlmAuth.Name] = httpProperties.AuthenticationSettings.UseNTLMAuthentication; this.pgHeaders.SelectedObject = bag; }
/// <summary> /// Begins a new asynchronous HTTP Post request. This function is not thread safe. /// </summary> /// <param name="postUri"> The Url string.</param> /// <param name="properties"> The HttpProperties to set for the request.</param> /// <param name="values"> The data to post.</param> /// <param name="cookies"> The cookie data to set for the request.</param> /// <param name="httpRequestState"> The HttpState.</param> public void StartAsyncHttpPost(string postUri,HttpProperties properties,ArrayList values, CookieCollection cookies, HttpState httpRequestState) { // httpRequestState = new HttpState(); // httpRequestState.TestItem = unitTestItem; // httpRequestState.IsLastItem = lastItem; postUri = EncodeDecode.UrlDecode(postUri); postUri = EncodeDecode.HtmlDecode(postUri); // create webrequest try { //this.ValidateIPAddress(new Uri(postUri)); httpRequestState.HttpRequest = (HttpWebRequest)WebRequest.Create(postUri); // Set HttpWebRequestProperties SetHttpWebRequestProperties(httpRequestState.HttpRequest, properties); // Apply proxy settings if ( this.ProxySettings != null ) { SetProxy(httpRequestState.HttpRequest,this.ProxySettings); } //httpRequestState.httpRequest.Referer = postUri; // Continue headers //hwr.ContinueDelegate = getRedirectHeaders; // save cookies httpRequestState.HttpRequest.CookieContainer=new CookieContainer(); if ( cookies!=null ) { httpRequestState.HttpRequest.CookieContainer.Add(cookies); } byte[] data=null; if (values!=null) { // transform to postdata and encode in bytes string postData = GetPostData(values); data = Encoding.UTF8.GetBytes(postData); // set properties httpRequestState.HttpRequest.Method="POST"; httpRequestState.HttpRequest.ContentType="application/x-www-form-urlencoded"; httpRequestState.HttpRequest.ContentLength=data.Length; // get request stream // TODO: async, but in our example we ain't posting files Stream stm = httpRequestState.HttpRequest.GetRequestStream(); stm.Write(data,0,data.Length); stm.Flush(); stm.Close(); } // Get Response IAsyncResult ar = httpRequestState.HttpRequest.BeginGetResponse(new AsyncCallback(FastResponseCallback),httpRequestState); // register a timeout ThreadPool.RegisterWaitForSingleObject(ar.AsyncWaitHandle, new WaitOrTimerCallback(BaseHttpForm.RequestTimeoutCallback), httpRequestState, this.GetTimeout(), true); } catch { throw; } finally { if ( httpRequestState.HttpResponse != null ) { httpRequestState.HttpResponse.Close(); } } }
/// <summary> /// Begins a new asynchronous HTTP Get request. This function is not thread safe. /// </summary> /// <param name="uri"> An uri to request.</param> /// <param name="properties"> The HttpProperties to set for the request.</param> /// <param name="values"> The values to include for a GET request.</param> /// <param name="cookies"> The cookies to set for the request.</param> /// <param name="httpRequestState"> Sets the Http State type.</param> /// <param name="doDecode"> Decodes the uri with Url and Html.</param> public void StartAsyncHttpGet(string uri, HttpProperties properties, ArrayList values, CookieCollection cookies, HttpState httpRequestState, bool doDecode) { if ( doDecode ) { uri = EncodeDecode.UrlDecode(uri); uri = EncodeDecode.HtmlDecode(uri); } try { //this.ValidateIPAddress(new Uri(uri)); if ( values != null ) { uri = AppendToUri(uri,values); } httpRequestState.HttpRequest = (HttpWebRequest)WebRequest.Create(uri); // Set HttpWebRequestProperties SetHttpWebRequestProperties(httpRequestState.HttpRequest, properties); // Apply proxy settings if ( this.ProxySettings != null ) { SetProxy(httpRequestState.HttpRequest,this.ProxySettings); } // Continue headers //hwr.ContinueDelegate=getRedirectHeaders; // save cookies httpRequestState.HttpRequest.CookieContainer=new CookieContainer(); if ( cookies!=null ) { httpRequestState.HttpRequest.CookieContainer.Add(cookies); } //httpRequestState.httpRequest.Referer = uri; IAsyncResult ar = httpRequestState.HttpRequest.BeginGetResponse(new AsyncCallback(FastResponseCallback),httpRequestState); // register a timeout ThreadPool.RegisterWaitForSingleObject(ar.AsyncWaitHandle, new WaitOrTimerCallback(BaseHttpForm.RequestTimeoutCallback), httpRequestState, this.GetTimeout(), true); } catch { throw; } finally { if ( httpRequestState.HttpResponse != null ) { httpRequestState.HttpResponse.Close(); } } }
/// <summary> /// Starts a new HTTP Post request. /// </summary> /// <param name="postUri"> The Url string.</param> /// <param name="properties"> The HttpProperties to set for the request.</param> /// <param name="values"> The data to post.</param> /// <param name="cookies"> The cookie data to set for the request.</param> /// <returns> A ResponseBuffer type.</returns> public ResponseBuffer StartSyncHttpPost(string postUri,HttpProperties properties,ArrayList values, CookieCollection cookies) { HttpWebResponse response=null; ResponseBuffer respBuffer=new ResponseBuffer(); httpRequestState = new HttpState(); postUri = EncodeDecode.UrlDecode(postUri); postUri = EncodeDecode.HtmlDecode(postUri); // create webrequest try { //this.ValidateIPAddress(new Uri(postUri)); httpRequestState.HttpRequest = (HttpWebRequest)WebRequest.Create(postUri); // Set HttpWebRequestProperties SetHttpWebRequestProperties(httpRequestState.HttpRequest, properties); // Apply proxy settings if ( this.ProxySettings != null ) { SetProxy(httpRequestState.HttpRequest,this.ProxySettings); } byte[] data=null; if (values!=null) { // transform to postdata and encode in bytes string postData = GetPostData(values); data=Encoding.UTF8.GetBytes(postData); } //httpRequestState.httpRequest.Referer = postUri; // set properties httpRequestState.HttpRequest.Method="POST"; httpRequestState.HttpRequest.ContentType="application/x-www-form-urlencoded"; httpRequestState.HttpRequest.ContentLength=data.Length; // get request stream Stream stm = httpRequestState.HttpRequest.GetRequestStream(); stm.Write(data,0,data.Length); stm.Close(); //hwr.ContinueDelegate=getRedirectHeaders; // save cookies httpRequestState.HttpRequest.CookieContainer=new CookieContainer(); if ( cookies!=null ) { httpRequestState.HttpRequest.CookieContainer.Add(cookies); } HttpWebResponse httpResponse = (HttpWebResponse)httpRequestState.HttpRequest.GetResponse(); httpRequestState.HttpResponse = httpResponse; // get ResponseBuffer respBuffer = HttpPipeline.FillResponseBuffer(httpResponse, httpRequestState.HttpRequest, properties, httpRequestState); } catch (ProtocolViolationException p) { if ( response!=null ) { response.Close(); } respBuffer.ErrorMessage = "Protocol Exception:" + p.Message; return respBuffer; } catch (WebException w) { StringBuilder s = new StringBuilder(); s.Append("Error message:"); s.Append(w.Message); s.Append("\r\nStatus Code:"); s.Append(((HttpWebResponse)w.Response).StatusCode); s.Append("\r\nStatus Description:"); s.Append(((HttpWebResponse)w.Response).StatusDescription); if ( response!=null ) { response.Close(); } respBuffer.ErrorMessage = s.ToString(); return respBuffer; } // response here return respBuffer; }
/// <summary> /// Creates a new Scripting Designer. /// </summary> public ScriptingDataDesigner() { // This call is required by the Windows Form Designer. InitializeComponent(); objectCount++; // Add MainPage UserControl mainPage.Dock = DockStyle.Fill; mainPage.Visible = false; pnUserControl.Controls.Add(mainPage); pageIcons.Images.Add(mainPage.Icon); // Add Request page requestPage.Dock = DockStyle.Fill; requestPage.Visible = false; pnUserControl.Controls.Add(requestPage); pageIcons.Images.Add(requestPage.Icon); // Load custom pages. ScriptingPageManager pageManager = new ScriptingPageManager(); BaseScriptingDataPage[] controls = pageManager.LoadDesignerPages("ScriptingDesigner"); ArrayList loadedPages = new ArrayList(); foreach ( BaseScriptingDataPage page in controls ) { page.Dock = DockStyle.Fill; page.Visible = false; pnUserControl.Controls.Add(page); loadedPages.Add(page); if ( page.Icon == null ) { throw new ArgumentNullException("Icon","The Icon parameter in BaseScriptingDataPage is null."); } else { pageIcons.Images.Add(page.Icon); } } _loadedPages = (BaseScriptingDataPage[])loadedPages.ToArray(typeof(BaseScriptingDataPage)); _defaultHttpProperties = (HttpProperties)ConfigManager.Read("greenBlue/httpClient", true); }
/// <summary> /// Begins a new asynchronous HTTP Post request. This function is not thread safe. /// </summary> /// <param name="postUri"> The Url string.</param> /// <param name="properties"> The HttpProperties to set for the request.</param> /// <param name="values"> The data to post.</param> public void StartAsyncHttpPost(string postUri,HttpProperties properties,ArrayList values) { if ( values != null ) { StartAsyncHttpPost(postUri,properties,values,null); } }