void ParseStringAndSetTrafficStats(string stringToParse) { // нахожу на странице поле общего трафика и достаю значение через группу Match parsMatchTotalTraffic = Regex.Match(stringToParse, regexTotalTraffic); if (!parsMatchTotalTraffic.Success) { MessageBox.Show("DEBUG.\n\nCan not find TotalTraffic"); string debugString = "DEBUG.\n\nCan not find TotalTraffic" + "\nin" + stringToParse; string filePath = @AppDomain.CurrentDomain.BaseDirectory + @"log-" + DateTime.Now.Second + @".txt"; File.WriteAllText(filePath, debugString); } // нахожу на странице поле трафика текущей сессии и достаю значение через группу Match parsMatchCurrentSession = Regex.Match(stringToParse, regexCurrentSession); //<td>Трафик МБ</td>.*?<strong>.*(?<currSessionT>\d{1,4})</strong>+? if (!parsMatchCurrentSession.Success) //<strong>.*?(?<currSessionT>\d{1,4})\..*</strong>+? { MessageBox.Show("DEBUG.\n\nCan not find CurrentSession"); } //нахожу на странице поле сальдо и достаю значение через группу Match parsMatchSaldo = Regex.Match(stringToParse, regexSaldo); if (!parsMatchSaldo.Success) { MessageBox.Show("DEBUG.\n\nCan not find Saldo"); } //заполняю структуру статистики _trafficStatictic = new TrafficStatictic(parsMatchCurrentSession.Groups["currSessionT"].Value, parsMatchTotalTraffic.Groups["AllT"].Value, parsMatchSaldo.Groups["Saldo"].Value); }
public async Task<TrafficStatictic> GetPageContentAsync() { //Event OnStatisticLoadingStart(); HttpResponseMessage response; using (HttpClient httpClient = new HttpClient()) { HttpContent content = new StringContent(_postData); //важная строка - без нее не проходит логин content.Headers.ContentType = new MediaTypeHeaderValue("application/x-www-form-urlencoded"); response = await httpClient.PostAsync(URLLogin, content); } response.EnsureSuccessStatusCode(); //проверка на правильность логина/пароля if (response.RequestMessage.RequestUri.AbsolutePath.Contains("statistic")) { var respContent = await response.Content.ReadAsStringAsync(); respContent = respContent.Replace("\n", ""); respContent = respContent.Replace("\r", ""); respContent = respContent.Replace("\t", ""); //Parsing ParseStringAndSetTrafficStats(respContent); //Event OnStatisticLoaded(); return _trafficStatictic; } MessageBox.Show(Properties.Resources.WrongUserDataMessage); TrafficStatictic emptyTrafficStatictic = new TrafficStatictic("0000", "0000", "0000"); //Event OnStatisticLoaded(); return emptyTrafficStatictic; }