// methods private async Task SendRequestFromGUI() { infoTextBlock.Text = "Loading ..."; rawTextBlock.Document.Blocks.Clear(); FullTextBlock.Document.Blocks.Clear(); previewHTML.Navigate((Uri)null); try { Requester.Requester cm = new Requester.Requester(); string url = urlTextBox.Text; string method = methodComboBox.Text; Dictionary <string, string> header = new Dictionary <string, string>(); foreach (Requester.DataGridValue item in dataGridHeader.Items.SourceCollection) { if (item.active && item.key != null) { header.Add(item.key, item.value); } } string body = new TextRange( bodyTextBlock.Document.ContentStart, bodyTextBlock.Document.ContentEnd ).Text; Dictionary <string, string> dataGridParamsInDictionary = new Dictionary <string, string>(); foreach (Requester.DataGridValue item in dataGridParams.Items.SourceCollection) { if (item.active) { dataGridParamsInDictionary.Add(item.key, item.value); } } url = cm.ApplyParamsToUrl(url, dataGridParamsInDictionary); RequestResponse response = await cm.Send(method, url, body, header); if (response.content != null && response.content != "") { previewHTML.NavigateToString(response.content); } rawTextBlock.Document.Blocks.Add(new Paragraph(new Run(response.content))); // make slowest part in parallel formatedRichTextBox.Dispatcher.Invoke(new Action(() => { var output = formatedRichTextBox; output.Document.Blocks.Clear(); Beautifier beautifier = new Beautifier(); beautifier.BeautyRichTextBox(response.content, output); })); FullTextBlock.Document.Blocks.Add(new Paragraph(new Run(response.statusCode.Key + " (" + response.statusCode.Value + ")"))); FullTextBlock.Document.Blocks.Add(new Paragraph(new Run(response.header))); FullTextBlock.Document.Blocks.Add(new Paragraph(new Run(response.timing + "ms"))); FullTextBlock.Document.Blocks.Add(new Paragraph(new Run(response.content))); StatusCodeTextBox.Text = response.statusCode.Key + " (" + response.statusCode.Value + ")"; string[] statusCodeColors = new string[] { "#bdbdbd", // 1xx "#2e7d32", // 2xx "#1565c0", // 3xx "#c62828", // 4xx "#6a1b9a", // 5xx }; StatusCodeTextBox.Background = (SolidColorBrush)(new BrushConverter().ConvertFrom(statusCodeColors[(int)(response.statusCode.Key / 100 - 1)])); infoTextBlock.Text = "Loading complete"; } catch (Exception e) { if (e.InnerException != null) { StatusCodeTextBox.Text = "404 (Page Not Found)"; StatusCodeTextBox.Background = (SolidColorBrush)(new BrushConverter().ConvertFrom("#c62828")); infoTextBlock.Text = e.InnerException.Message; } else { infoTextBlock.Text = e.Message; } } }