В этой статье я расскажу о потреблении сервиса JSON в Windows Phone.
Давайте напишем код:
Шаг 1. Создайте приложение службы WCF.
Шаг 2: Создать ServiceContract в IService1.
// ПРИМЕЧАНИЕ. Вы можете использовать команду «Переименовать» в меню «Refactor», чтобы изменить имя интерфейса «IService1» в коде и файле конфигурации вместе.
[ServiceContract] public interface IService1 { [OperationContract] [WebGet(UriTemplate = "GetCustomerDetails", RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json)] Customer[] GetCustomerDetails(); }
Шаг 3: Создание DataContract в IService1.
[DataContract] public class Customer { [DataMember] public int CustomerId { get; set; } [DataMember] public string CustomerName { get; set; } } Step 4: Add GetCustomerDetails method in Service1.svc.cs. public Customer[] GetCustomerDetails() { return new Customer[] { new Customer() {CustomerId=100,CustomerName="Cust 1",}, new Customer() {CustomerId=102,CustomerName="Cust 2"}, new Customer() {CustomerId=103,CustomerName="Cust 3"}, new Customer() {CustomerId=104,CustomerName="Cust 4"}, new Customer() {CustomerId=105,CustomerName="Cust 5"}, new Customer() {CustomerId=106,CustomerName="Cust 6"}, new Customer() {CustomerId=107,CustomerName="Cust 7"}, new Customer() {CustomerId=108,CustomerName="Cust 8"} }; }
Шаг 5: Откройте Web.Config и поместите под тегом serviceModel.
<system.serviceModel> <services> <service name="JSON_Service.Service1"> <endpoint name="jsonEP" address="" binding="webHttpBinding" behaviorConfiguration="json" contract="JSON_Service.IService1"/> </service> </services> <behaviors> <endpointBehaviors> <behavior name="json"> <webHttp/> </behavior> </endpointBehaviors> </behaviors> <serviceHostingEnvironment multipleSiteBindingsEnabled="true" /> </system.serviceModel>
Сервис готов, теперь мы создадим приложение Windows Phone для использования данных сервиса JSON.
Шаг 6: Создайте проект Silverlight для Windows Phone.
Шаг 7: Поместите 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 JSON 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>
Шаг 8: Создайте клиента Class.
public class Customer { public int CustomerId { get; set; } public string CustomerName { get; set; } } Step 9: Place btnGetData_Click method in MainPage.Xaml.cs which will invoked on click of Get JSON Data Button. void btnGetData_Click(object sender, RoutedEventArgs e) { try { WebClient webClient = new WebClient(); Uri uri = new Uri("http://localhost:4611/Service1.svc/GetCustomerDetails"); webClient.OpenReadCompleted += new OpenReadCompletedEventHandler(webClient_OpenReadCompleted); webClient.OpenReadAsync(uri); } catch (Exception ex) { MessageBox.Show(ex.Message); } }
Шаг 10: Добавьте ссылку на System.Servicemode.Web и System.Xml.Linq.
Шаг 11: Добавьте ниже, используя директиву в MainPage.Xaml.cs.
using System.Runtime.Serialization.Json; using System.Collections.ObjectModel;
Шаг 12: метод webClient_OpenReadCompleted будет вызван после завершения операции чтения службы. Поместите ниже метод в MainPage.Xaml.cs.
void webClient_OpenReadCompleted(object sender, OpenReadCompletedEventArgs e) { DataContractJsonSerializer ser = null; try { ser = new DataContractJsonSerializer(typeof(ObservableCollection<Customer>)); ObservableCollection<Customer> customers = ser.ReadObject(e.Result) as ObservableCollection<Customer>; 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); } }
Шаг 13: Теперь запустите приложение Windows Phone и нажмите «Получить данные JSON». Если служба не запущена, необходимо разместить службу servie.
На этом статья о потреблении JSON в Windows Phone заканчивается.