Ноу Інти, лекція, робота webclient і httpwebrequest

HttpWebRequest

У додатку (Рис. 29.2) використовуються дві сторінки, одна з них, MainPage.xaml, виводить список міст, при торканні рядки, відповідної місту, здійснюється перехід на сторінку ForecastPage.xaml, на якій відображається детальний прогноз погоди для вибраного міста. У додатку використовується кілька допоміжних класів.

Ноу Інти, лекція, робота webclient і httpwebrequest


збільшити зображення
Мал. 29.2. Проект програми, що працює з HttpWebRequest

Ноу Інти, лекція, робота webclient і httpwebrequest


збільшити зображення
Мал. 29.3. Запит на оновлення версії платформи додатки

Для поновлення проекту досить натиснути на кнопку Так у вікні. В даному випадку перетворення пройшло нормально, додаток зберегло працездатність. В ході подібного перетворення слід враховувати те, що хоча більшість механізмів платформ сумісно, ​​в реалізації деяких API є відмінності, які можуть перешкодити нормальній роботі програми без додаткових зусиль щодо приведення додатки в належний вигляд.

У додатку, для відображення даних в інтерфейсі, використані прив'язки даних. У файлі City.cs визначена базова структура даних для зберігання відомостей про місто, для якого можна вивести інформацію про погоду, в файлі Cities.cs формується список міст для виведення на головну сторінку. Допоміжний клас ForecastPeriod.cs визначає структуру даних для зберігання прогнозу погоди за певний період. Основний функціонал додатка, який, крім іншого, має на увазі використання HttpWebRequest і супутніх механізмів для отримання даних зі служби прогнозів погоди, реалізований в файлі Forecast .cs.

На сторінці MainPage виводиться список міст, він виводиться в списку, джерело елементів якого встановлюється на об'єкт типу Cities, оголошений в класі App. При дотику до елементу викликається, з параметрами, що відповідають обраному місту, сторінка ForecastPage.

У файлі коду цієї сторінки визначено об'єкт типу Forecast. при переході на сторінку, в подію OnNavigatedTo, витягуються параметри, передані їй при переході на неї з головної сторінки, після чого створюється новий об'єкт типу Forecast і викликається його метод GetForecast із зазначенням довготи і широти обраного міста. Цей об'єкт встановлюється в якості контексту даних сторінки. Його поле ForecastList встановлюється в якості джерела даних для списку, що міститься на сторінці і відображає прогноз погоди.

Лістинг 29.4. Фрагмент коду файлу Forecast.cs

Потім виконується асинхронний виклик BeginGetResponse. У виклик передається делегат AsyncCallback, який посилається на метод, який повинен бути викликаний при завершенні асинхронної операції. Другий параметр виклику - це об'єкт forecastState, який на даний момент зберігає посилання на об'єкт запиту в поле AsyncRequest.

Коли асинхронна операція запиту даних з веб-сервісу завершується, викликається метод HandleForecastResponse. Цей метод має аргумент asyncResult, властивість якого AsyncState дозволяє отримати доступ до другого параметру (forecastState), який був переданий при виклику асинхронної операції запиту веб-ресурсу.

Загальна схема роботи з HttpWebRequest виглядає наступним чином:

  1. формування запиту
  2. Створення об'єкта HttpWebRequest, при необхідності - настройка параметрів.
  3. Створення методу, який буде викликаний при завершенні асинхронної операції, при цьому в даному методі завершується запит, виконується отримання результатів запиту, придатних для подальшого розбору.
  4. Виконання асинхронного звернення до веб-службі.

Додаткові матеріали

Схожі статті