Beispiel #1
0
        private void MakeRequestCommand_OnExecuted(object sender, ExecutedRoutedEventArgs e)
        {
            var currentUrlHistoryItem = getCurrentUrlHistoryModel();

            if (!UrlHistory.Contains(currentUrlHistoryItem, urlHistoryModelEqualityComparer))
            {
                UrlHistory.Insert(0, currentUrlHistoryItem);
                saveHistory();
            }
            CurrentRequestViewModel.Headers           = CurrentRequestViewModel.UIHeaders.Where(h => h.IsSelected).Select(h => new HttpHeader(h.Name, h.Value)).ToList();
            _MainWindow.IsEnabled                     = false;
            new Action(() => CurrentResponseViewModel = xhrLogicManager.SendXHR(CurrentRequestViewModel)).BeginInvoke((ar =>
                                                                                                                       Dispatcher.BeginInvoke(DispatcherPriority.Normal, new Action(() => _MainWindow.IsEnabled = true))), null);
        }
Beispiel #2
0
        XHRResponseModel parseResponseString(string responseString)
        {
            var lines   = responseString.Split(new [] { Environment.NewLine }, StringSplitOptions.None).ToList();
            var code    = int.Parse(Regex.Match(lines[0], " [0-9]{3} ").Value);
            var message = Regex.Match(lines[0], " [0-9]{3} (.+)", RegexOptions.IgnoreCase).Groups[1].Value;

            var headerStrings = new List <string>();
            int idx;

            for (idx = 1; idx < lines.Count; idx++)
            {
                if (lines[idx] == string.Empty)
                {
                    break;
                }
                headerStrings.Add(lines[idx]);
            }

            var content = string.Join(string.Empty, lines.Skip(idx));
            var headers = new List <HttpHeader>();

            headerStrings.ForEach(hs =>
            {
                var match = Regex.Match(hs, "(.+): (.+)");
                var name  = match.Groups[1].Value;
                var value = match.Groups[2].Value;
                headers.Add(new HttpHeader(name, value));
            });
            var result = new XHRResponseModel
            {
                StatusCode    = (HttpStatusCode)Enum.Parse(typeof(HttpStatusCode), code.ToString()),
                HttpHeaders   = headers,
                StatusMessage = message,
                Content       = content
            };

            return(result);
        }
Beispiel #3
0
        public XHRResponseModel SendXHRUsingWebClient(XHRRequestModel requestModel)
        {
            var client = new HttpClient();

            client.DefaultRequestHeaders.Clear();
            var message = new HttpRequestMessage
            {
                Method     = requestModel.Verb,
                RequestUri = new Uri(requestModel.Url, UriKind.Absolute)
            };

            if (requestModel.Content != null)
            {
                message.Content = new StringContent(requestModel.Content, Encoding.Default, "application/json");
            }
            requestModel.Headers.ForEach(h => message.Headers.TryAddWithoutValidation(h.Name, h.Value));

            try
            {
                var result   = client.SendAsync(message).Result;
                var response = new XHRResponseModel
                {
                    Content     = result.Content.ReadAsStringAsync().Result,
                    StatusCode  = result.StatusCode,
                    HttpHeaders = result.Headers.Select(h => new HttpHeader(h.Key, h.Value.FirstOrDefault())).ToList()
                };
                return(response);
            }
            catch (Exception ex)
            {
                return(new XHRResponseModel
                {
                    Content = ex.ToString()
                });
            }
        }