В моей предыдущей статье 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 заканчивается.