Mega Code Archive

 
Categories / Silverlight / Communication
 

Getting data from a REST service

<UserControl x:Class='SilverlightApplication3.MainPage'     xmlns='http://schemas.microsoft.com/winfx/2006/xaml/presentation'      xmlns:x='http://schemas.microsoft.com/winfx/2006/xaml'     xmlns:d='http://schemas.microsoft.com/expression/blend/2008'      xmlns:mc='http://schemas.openxmlformats.org/markup-compatibility/2006'      mc:Ignorable='d'      d:DesignWidth='640'      d:DesignHeight='480'>   <Grid x:Name="LayoutRoot" Background="White">     <Grid.RowDefinitions>       <RowDefinition Height="Auto"></RowDefinition>       <RowDefinition Height="Auto"></RowDefinition>       <RowDefinition></RowDefinition>     </Grid.RowDefinitions>     <StackPanel Orientation="Horizontal" Grid.Row="0">       <TextBox x:Name="tbxInput" Grid.Row="0" Height="25" Width="100" Margin="2"></TextBox>       <Button x:Name="btnSingleXml" Content="Single Xml" Margin="2" Click="btnSingleXml_Click"></Button>     </StackPanel>     <TextBlock x:Name="tbkName" Height="Auto" Width="Auto" Grid.Row="1"></TextBlock>     <TextBlock x:Name="tbkRaw" Height="Auto" Width="Auto" Grid.Row="2" TextWrapping="Wrap"></TextBlock>   </Grid> </UserControl> //File: Page.xaml.cs using System; using System.Collections.Generic; using System.Linq; using System.Net; using System.Windows; using System.Windows.Controls; using System.Windows.Documents; using System.Windows.Input; using System.Windows.Media; using System.Windows.Media.Animation; using System.Windows.Shapes; using System.Threading; using System.IO; namespace SilverlightApplication3 {   public partial class MainPage : UserControl   {     private SynchronizationContext UIThread;     public MainPage()     {       InitializeComponent();     }     private void btnSingleXml_Click(object sender, RoutedEventArgs e)     {       UIThread = SynchronizationContext.Current;       string rawPath = "http://localhost:50145/Authors.svc/SingleXml/{0}";       Uri path = new Uri(string.Format(rawPath, tbxInput.Text), UriKind.Absolute);       HttpWebRequest request = (HttpWebRequest)WebRequest.Create(path);       request.BeginGetResponse(SingleXmlCallBack, request);     }     private void SingleXmlCallBack(IAsyncResult result)     {       HttpWebRequest request = (HttpWebRequest)result.AsyncState;       HttpWebResponse response = (HttpWebResponse)request.EndGetResponse(result);       Stream responseStream = response.GetResponseStream();       UIThread.Post(UpdateUiText, responseStream);     }     private void UpdateUiText(object stream)     {       if (stream != null)       {         StreamReader sr = new StreamReader((Stream)stream);         tbkRaw.Text = sr.ReadToEnd();       }       else       {         tbkRaw.Text = "";       }     }   } }