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 = "";
}
}
}
}
Related examples in the same category