Статьи

Использование ASP.NET MVC Web API

В моей предыдущей статье ASP.NET MVC 4 — Hello Web API  я говорил о простом веб-API ASP.NET MVC 4. В этой статье я расскажу о том, как использовать Web API в Windows Phone. Эта статья будет похожа на мою предыдущую статью Windows Phone — Потребление службы JSON, но в этой статье я буду использовать JSON.NET вместо DataContractJsonSerializer

Давайте напишем код …

Шаг 1: Загрузите код из  ASP.NET MVC 4 — Hello Web API или вы можете создать приложение Web API, следуя инструкциям.

Шаг 2. Загрузите JSON.NET из CodePlex

Шаг 3: Распакуйте загруженный JSON.NET, перейдите в папку WindowsPhone. Вы получите Newtonsoft.Json.dll в папке.

Шаг 4: Создайте проект Silverlight для Windows Phone.

Шаг 5:  Поместите Grid RowDefinition, Button, TextBlock и ListBox в ContentPanel в MainPage.XAML.

<Grid.RowDefinitions>
   <RowDefinition></RowDefinition>
   <RowDefinition></RowDefinition>
   <RowDefinition></RowDefinition>
   <RowDefinition></RowDefinition>
</Grid.RowDefinitions>

<Button x:Name="btnGetData" Grid.Row="0" Height="75" Content="Get Web API Data" Click="btnGetData_Click" />
<TextBlock Text="Customer ID Customer Name" Height="50" Grid.Row="1" FontSize="22" FontWeight="Bold"TextAlignment="Left" Foreground="#FFFFB090"></TextBlock>
<ListBox Name="lstCustomer" Grid.Row="2" FontSize="24">
</ListBox>

Шаг 6:  Создайте Class Customer с сущностями, которые вы хотите связать. Веб-API Json будет иметь сущности CustomerId, CustomerName и Address, в этом случае я связываю только CustomerId и CustomerName.

Имя объектов в классе Customer должно совпадать с именем объектов, возвращаемых Web API в Json.

public class Customer
{
   public int CustomerId { get; set; }
   public string CustomerName { get; set; }
}

Step 7: Place btnGetData_Click in MainPge.Xaml.cs which will be invoked on click of GET Web API data.

void btnGetData_Click(object sender, RoutedEventArgs e)
{
   try
   {
      WebClient webClient = new WebClient();
      Uri uri = new Uri("http://localhost:1712/api/customer/");
      webClient.DownloadStringCompleted += new DownloadStringCompletedEventHandler(webClient_DownloadStringCompleted);
      webClient.DownloadStringAsync(uri);
   }
   catch (Exception ex)
   {
      MessageBox.Show(ex.Message);
   }
}

Шаг 8: Добавьте ссылку на Newtonsoft.Json.dll из папки WindowsPhone и добавьте Newtonsoft.Json, используя директиву.

используя Newtonsoft.Json;

Шаг 9: Поместите метод webClient_DownloadStringCompleted в MainPage.Xaml.cs, который будет вызываться после завершения обслуживания.

void webClient_DownloadStringCompleted(object sender, DownloadStringCompletedEventArgs e)
{
   try
   {
      List<Customer> customers = JsonConvert.DeserializeObject<List<Customer>>(e.Result);
      foreach (Customer em in customers)
      {
         int customerId = em.CustomerId;
         string customerName = em.CustomerName;
         lstCustomer.Items.Add(customerId + " " + customerName);
      }
   }
   catch (Exception ex)
   {
      MessageBox.Show(ex.Message);
   }
}

Шаг 10. Теперь запустите приложение и нажмите «Получить данные веб-API». Данные будут отображаться в приложении Windows Phone.

На этом статья о потреблении веб-API в Windows Phone заканчивается.