Статьи

Windows Phone: сохранение, обновление и удаление с помощью веб-API

В одной из предыдущих статей я говорил о том, как использовать веб-API в Windows Phone. В этой статье я расскажу о том, как использовать веб-API из Windows Phone для сохранения, обновления и удаления.

Как и в предыдущей статье, в этой статье я также буду использовать JSON.NET

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

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

Шаг 2: Добавьте приведенный ниже код в файл CustomerController.cs, который находится в папке «Контроллеры», загруженной с шага выше.

public Customer DeleteCustomer(Customer customer)
{
   //Code to delete customer
   return new Customer { CustomerId = 100, CustomerName = "Hemant", Address = "Bangalore" };
}

public Customer PostCustomer(Customer customer)
{
   //Code to save or update customer
   return customer;
}

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

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

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

Шаг 6:  Поместите два текстовых блока, два текстовых поля и две кнопки в MainPage.Xaml внутри панели содержимого. Одна кнопка для удаления и другая кнопка для сохранения или обновления.

<TextBlock Text="Name" Height="30" HorizontalAlignment="Left" Margin="10,100,0,0" Name="textDefault" VerticalAlignment="Top" FontSize="18" />
<TextBox InputScope="Default" Height="70" HorizontalAlignment="Left" Margin="120,90,0,0" Name="txtText" Text="" VerticalAlignment="Top" Width="320" />

<TextBlock Text="Address" Height="30" HorizontalAlignment="Left" Margin="10,175,0,0" Name="textEntropy" VerticalAlignment="Top" FontSize="18" />
<TextBox InputScope="Default" Height="70" HorizontalAlignment="Left" Margin="120,165,0,0" Name="txtEntropy" Text="" VerticalAlignment="Top" Width="320" />

<Button x:Name="btnSaveData" Grid.Row="0" Height="75" Content="Save Data" Click="btnSaveData_Click" />
<Button x:Name="btnDeleteData" Grid.Row="0" Margin="12,200,12,0" Height="75" Content="Delete Data" Click="btnDeleteData_Click" />

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

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

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

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

using Newtonsoft.Json;
using System.Text;

Шаг 9: Поместите метод btnDeleteData_Click в MainPge.Xaml.cs, который будет вызываться при нажатии кнопки «Удалить данные».

Мы использовали UploadStringAsync из WebClient. Тип содержимого заголовков WebClient должен быть установлен как «application / json», а Encoding как Encoding.UTF8

UploadStringAsync должен иметь «DELETE», который является методом HTTP.

void btnDeleteData_Click(object sender, RoutedEventArgs e)
{
   try
   {
      Customer customer = new Customer();
      customer.CustomerId = 1;

      string jsonData = JsonConvert.SerializeObject(customer);
      WebClient webClient = new WebClient();
      Uri uri = new Uri("http://localhost:1712/api/customer/", UriKind.Absolute);

      webClient = new WebClient();
      webClient.Headers["Content-type"] = "application/json";
      webClient.Encoding = Encoding.UTF8;

      webClient.UploadStringCompleted += new UploadStringCompletedEventHandler(webClient_UploadStringCompleted);
      webClient.UploadStringAsync(uri, "DELETE", jsonData); 
   }
   catch (Exception ex)
   {
      MessageBox.Show(ex.Message);
   }
}

Шаг 10: Поместите метод btnSaveData_Click в MainPge.Xaml.cs, который будет вызываться при нажатии кнопки «Сохранить данные».

void btnSaveData_Click(object sender, RoutedEventArgs e)
{
   try
   {
      Customer customer = new Customer();
      customer.CustomerId = 10;   
      customer.CustomerName = txtName.Text;
      customer.Address = txtAddress.Text;

      string jsonData = JsonConvert.SerializeObject(customer);

      WebClient webClient = new WebClient();
      webClient.Headers["Content-type"] = "application/json";
      webClient.Encoding = Encoding.UTF8;

      Uri uri = new Uri("http://localhost:1712/api/customer/", UriKind.Absolute);
      webClient.UploadStringCompleted += new UploadStringCompletedEventHandler(webClient_UploadStringCompleted);
      webClient.UploadStringAsync(uri, "POST", jsonData);
   }
   catch (Exception ex)
   {
      MessageBox.Show(ex.Message);
   }
}

Шаг 11: Поместите ниже код, который будет запущен после завершения загрузки.

 

void webClient_UploadStringCompleted(object sender, UploadStringCompletedEventArgs e)
{
   try
   {
      Customer customer = JsonConvert.DeserializeObject<Customer>(e.Result);
   }
   catch (Exception ex)
   {
      MessageBox.Show(ex.Message);
   }
}

Шаг 12: Теперь запустите приложение Web API. Поместите URI Web API в URI приложения Windows Phone и запустите его.

На этом статья «Сохранить, обновить и удалить с помощью веб-API в Windows Phone» заканчивается.