public void HttpGetRequestTest() { LittleLogger logger = new LittleLogger("../../Test_Data/HttpGetRequestTest/log.txt"); WeatherService wService = new WeatherService(logger); // Результат запроса string str1 = wService.Request("http://yandex.ru/"); string str2 = wService.Request("http://news.yandex.ru/"); // Сохраним результат запроса в файл using (StreamWriter writer = new StreamWriter("../../Test_Data/HttpGetRequestTest/request_1.htm")) { writer.Write(str1); } using (StreamWriter writer = new StreamWriter("../../Test_Data/HttpGetRequestTest/request_2.htm")) { writer.Write(str2); } // Содержат ли результат запроса заданные элементы StringAssert.Contains(str1, "https://disk.yandex.ru/"); StringAssert.Contains(str2, "Яндекс.Новости: Главные новости"); }
// Метод для получения погодных данных с Yahoo! Weather // для города targetCity public Dictionary<string, string> getYahooWeather(City targetCity) { // Используя API Yahoo! Weather (https://developer.yahoo.com/weather/), // делаем запрос на погодный сервис методом GET, // где w - ID города, u - единицы измерения. // Получаем ответ в виде XML. // Парсим XML строку, чтобы найти дату, температуру, // атм. давление, влажность воздуха, хар. ветра, облачность WeatherService wService = new WeatherService(Logger); XElement root = XElement.Parse( wService.Request("http://weather.yahooapis.com/forecastrss?w=" + targetCity.IDList["Yahoo"] + "&u=c")); try { wService.WeatherData = new Dictionary<string, string>(); // Дата wService.WeatherData.Add("Date", root.Elements().ElementAt(0).Elements("item").Elements().ElementAt(5).Attribute("date").Value); // Температура wService.WeatherData.Add("Temperature", root.Elements().ElementAt(0).Elements("item").Elements().ElementAt(5).Attribute("temp").Value + "C"); // Атмосферное давление wService.WeatherData.Add("Pressure", root.Elements().ElementAt(0).Elements().ElementAt(9).Attribute("pressure").Value + "millibars"); // Влажность воздуха wService.WeatherData.Add("Wetness", root.Elements().ElementAt(0).Elements().ElementAt(9).Attribute("humidity").Value + '%'); // Ветер wService.WeatherData.Add("Wind", "Direction: " + root.Elements().ElementAt(0).Elements().ElementAt(8).Attribute("direction").Value + "deegres. | " + root.Elements().ElementAt(0).Elements().ElementAt(8).Attribute("speed").Value + "km/h"); // Облачность wService.WeatherData.Add("Clouds", root.Elements().ElementAt(0).Elements("item").Elements().ElementAt(5).Attribute("text").Value); } catch (Exception exception) { // Делаем запись в лог файл Logger.WriteLog(System.DateTime.Now.ToString() + " " + exception.TargetSite.ToString() + " " + exception.Message); } return wService.WeatherData; }
// Метод для получения погодных данных с Yandex Погода // для города targetCity public Dictionary<string, string> getYandexWeather(City targetCity) { // Используя API Яндекс Погода, // делаем запрос на погодный сервис методом GET, // http://export.yandex.ru/weather-ng/forecasts/city.xml // где city - ID города. // Получаем ответ в виде XML. // Парсим XML строку, чтобы найти дату, температуру, // атм. давление, влажность воздуха, хар. ветра, облачность WeatherService wService = new WeatherService(Logger); XElement root = XElement.Parse( wService.Request("http://export.yandex.ru/weather-ng/forecasts/" + targetCity.IDList["Yandex"] + ".xml")); try { wService.WeatherData = new Dictionary<string, string>(); // Дата wService.WeatherData.Add("Date", root.Elements().ElementAt(0).Elements().ElementAt(3).Value.Insert(10, " ")); // Температура wService.WeatherData.Add("Temperature", root.Elements().ElementAt(0).Elements().ElementAt(4).Value + 'C'); // Атмосферное давление wService.WeatherData.Add("Pressure", root.Elements().ElementAt(0).Elements().ElementAt(24).Value + "мм. рт. столба"); // Влажность воздуха wService.WeatherData.Add("Wetness", root.Elements().ElementAt(0).Elements().ElementAt(23).Value + '%'); // Ветер wService.WeatherData.Add("Wind", "Направление: " + root.Elements().ElementAt(0).Elements().ElementAt(21).Value + " | " + root.Elements().ElementAt(0).Elements().ElementAt(22).Value + "м/c"); // Облачность wService.WeatherData.Add("Clouds", root.Elements().ElementAt(0).Elements().ElementAt(9).Value); } catch (Exception exception) { // Делаем запись в лог файл Logger.WriteLog(System.DateTime.Now.ToString() + " " + exception.TargetSite.ToString() + " " + exception.Message); } return wService.WeatherData; }