Опубликован: 02.08.2013 | Доступ: платный | Студентов: 14 / 2 | Длительность: 18:38:00
Специальности: Программист
Самостоятельная работа 8:

Работа webClient и HttpWebRequest

Аннотация: Данная лекция посвящена работе с классами webClient и HttpWebRequest.

Цель работы: освоить технологию работы с классами webClient и HttpWebRequest

WebClient и HttpWebRequest

Для работы с веб-сервисами из приложений для Windows Phone обычно используют классы System.Net.WebClient (http://msdn.microsoft.com/en-us/library/windowsphone/develop/system.net.webclient%28v=vs.105%29.aspx) и System.Net.HttpWebRequest (http://msdn.microsoft.com/en-us/library/windowsphone/develop/system.net.httpwebrequest%28v=vs.105%29.aspx). И тот и другой класс позволяют достигать схожих целей, однако, между ними есть некоторые отличия, которые и определяют выбор того или иного класса для использования в конкретном приложении.

Так, обычно WebClient применяют тогда, когда нужно получить какие-либо данные из Интернета, он обеспечивает простую и удобную работу с GET/POST запросами. То есть, если наша задача – это получение, например, RSS-ленты с сервиса, или отправка файла с использованием POST-запроса, возможностей WebClient для этого вполне хватит. Кроме того, его использование позволит упростить код. Его возможностей хватит и для выполнения многих других действий, но более сложные сценарии взаимодействия с веб-службами обычно реализуют с использованием HttpWebRequest. Этот класс, в частности, нужен там, где предполагается использование PUT/DELETE запросов, он предоставляет больший уровень контроля над параметрами запроса. Например, если речь идёт об отправке файла на веб-сервер, то обычно для этого нам понадобится HttpWebRequest. При работе над конкретным проектом стоит ознакомиться с наборами инструментов, доступных в пространстве имен System.Net (http://msdn.microsoft.com/en-us/library/windowsphone/develop/btdf6a7e%28v=vs.105%29.aspx).

Можно сказать, в итоге, что для выполнения простых задач использование WebClient позволяет упростить их решение, при прочих равных условиях HttpWebRequest потребует более сложных программных конструкций, больше настроек. А при выполнении задач более сложных, требующих более полного контроля над процессом взаимодействия с веб-службой, некоторая усложнённость использования HttpWebRequest вполне оправдана.

WebClient

Рассмотрим работу с WebClient на примере приложения, размещенного в библиотеке кода MSDN "RSS-ридер в Windows Phone 8" ("RSS Reader in Windows Phone 8"). Загрузить пример можно по этой ссылке: http://code.msdn.microsoft.com/RSS-Reader-in-Windows-afa86457.

В структуре проекта (рис. 29.1.), присутствует файл RSSItem.css (Листинг 29.1), в котором определена структура для хранения данных о записи RSS-канала. Основная функциональность приложения реализована в файле кода к странице MainPage.xaml.

Приложение, демонстрирующее работу в WebClient

увеличить изображение
Рис. 29.1. Приложение, демонстрирующее работу в WebClient
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace RSSReaderWindowsPhone
{
     public class RSSItem
     {
         private string Description;

         public string Description1
         {
             get { return Description; }
             set { Description = value; }
         }

         private string Link;

         public string Link1
         {
             get { return Link; }
             set { Link = value; }
         }

         private string Title;

         public string Title1
         {
             get { return Title; }
             set { Title = value; }
         }
    }
}
Листинг 29.1. Файл RSSItem.css

Сама эта страница (Листинг 29.2) содержит элемент управления ListBox. Он, при работе приложения, представляет собой список полученных записей, который можно прокручивать. Заполнение элемента управления записями производится программным способом, при обработке данных, полученных с веб-службы, предоставляющей RSS-ленту. Приложение работает с RSS-летной в формате XML, ссылка на такую ленту присутствует в исходном варианте приложения.

<Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,131,12,0">
    <ListBox Name="ListBoxRss" Margin="10,-157,10,10">

    </ListBox>
</Grid>
Листинг 29.2. Фрагмент кода страницы MainPage.xaml