.NET Tutorials, Forums, Interview Questions And Answers
Welcome :Guest
 
Sign In
Register
 
Win Surprise Gifts!!!
Congratulations!!!


Top 5 Contributors of the Month
david stephan

Home >> Articles >> Windows 7 >> Post New Resource Bookmark and Share   

 Subscribe to Articles

Consuming basic REST service in Windows 7 mobile application

Posted By:Dhananjay Kumar       Posted Date: April 22, 2010    Points: 25    Category: Windows 7    URL: http://www.dotnetspark.com  

Consuming basic REST service in Windows 7 mobile application. In this article I am going to explain how to consume a REST service in windows 7 phone app.
 

Objective


In this article I am going to explain how to consume a REST service in windows 7 phone app. 


We will achieve this is two steps 
  1. Create and Host REST based WCF service 
  2. Consume service in W7 phone application. 

Create and host REST service 


There are many article, I have written discussing REST service.  All can be finding here.  But again, I am showing it here for benefit of your readers. 


What I am going to do is to create a very simple REST service.  Service will have one operation contract. This will take one string as input and return greeting message appending the string. 
  1. Open visual studio and from File menu select new project.  Go to WCF tab and select WCF service application. 

  2. Open Web.Config file and inside System.Servicemodel delete any existing endpoint settings. 

  3. Right click on your .svc file and select view markup.  

    1.gif

    Add as a Factory class to the markup of the service System.ServiceModel.Activation.WebServiceHostFactory. After adding markup should look like below 

    2.gif

  4. Define the contract. There is one operation contract. This will take a string as input parameter and return a string.  

    3.gif

    In WebGet attribute all settings are default for XML return and response.  URI for the operation will be 

    http://hostserver:port/Service1.svc/GetData/[parameter] so if you want to pass your name as parameter then URL would be
    http://hostserver:port/Service1.svc/GetData/DhananjayKumar

  5. Run the WCF service or right click on .svc file and select view in browser. Once you will run , you will see the below output

    4.gif

    In address bar of browser you can see the URL and XML output would be as below 

    5.gif

  6. We are going to host the service for our sample in Cassini server.



For reference complete code for Web.Config , Contract and Service definition is as below 


Contract (IService1.cs)


using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.ServiceModel.Web;
using System.Text;

namespace RESTtoConsumeinWindwPhone
{
   
    [ServiceContract]
    public interface IService1
    {
        [OperationContract]
        [WebGet(UriTemplate="GetData/{a}",
            RequestFormat=WebMessageFormat.Xml  ,
            ResponseFormat=WebMessageFormat.Xml,
            BodyStyle=WebMessageBodyStyle.Bare)]
        String GetData(string a);
       

    }
   
}


Service Definition (Service1.cs)

using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.ServiceModel.Web;
using System.Text;

namespace RESTtoConsumeinWindwPhone
{   
    public class Service1 : IService1
    {
        public String GetData(string a)
        {
            return "Hello " + a + "From REST Service "; 
        }
       

      
    }
}


Web.Config



  
    
  
  
    
      
        
          
          
        
      
    
    
  
  
    
  

Consuming REST service in Window 7 Phone application 


Very first create Windows Phone Application.  From Silverlight for Windows Phone tab select Windows Phone Application project type. 
  1. In content grid place  a textbox and a button.
  2. User will eneter text and on clcik event we will pass this text to service and display retrun string into a message box.  I am not designing the page very much it's a very simple page. 

6.gif



MainPage.Xaml.cs


  
    
      
      
    
    
      
      
    
    
      

Now I will be consuming REST service on click event of button. 
  1. Using WebClient class will make the asynchronous calls.

  2. On returning of the response as stream using DataContractSerliazer , I will de serialize  the returned stream.

    7.gif

  3. While constructing the URL to be called append input parameter. I am taking input parameter here from textbox. 

    8.gif

MainPage.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 Microsoft.Phone.Controls;
using System.Xml;
using System.Runtime.Serialization; 


namespace RESTServiceConsuming
{
    public partial class MainPage : PhoneApplicationPage
    {
        public MainPage()
        {
            InitializeComponent();

            SupportedOrientations = SupportedPageOrientation.Portrait | SupportedPageOrientation.Landscape;

            myButton.Click += new RoutedEventHandler(myButton_Click);
        }

        void myButton_Click(object sender, RoutedEventArgs e)
        {
            WebClient proxy = new WebClient();
            string strUri = "http://localhost:50841/Service1.svc/GetData/"+myTxtBox.Text;
            proxy.OpenReadCompleted+=new OpenReadCompletedEventHandler(proxy_OpenReadCompleted);
            proxy.OpenReadAsync(new Uri(strUri)); 
        }

        void proxy_OpenReadCompleted(object sender, OpenReadCompletedEventArgs e)
        {          

            DataContractSerializer ser = new DataContractSerializer(typeof(string)); 
            String str = ser.ReadObject(e.Result).ToString();
            myTxtBoxDisplay.Text = str;           


        }

       
    }
}

Press F5 to get the result 


9.gif

 
So, in this article I explained about how to consume a REST service in Win7 mobile app.  In later articles I shall explain image and streaming through REST service in Win7 mobile app. Thanks for reading. I hope it was useful. 


Happy Coding.


 Subscribe to Articles

     

Further Readings:

Responses
Author: Brandon Truong         Company URL: http://www.dotnetspark.com
Posted Date: August 04, 2010

Hi Dhananjay Kumar,
That was pretty useful post. However, I am still wondering how we can consume Restful service with POST method.

Cheers,
Brandon

Post Comment

You must Sign In To post reply
Find More Articles on C#, ASP.Net, Vb.Net, SQL Server and more Here

Hall of Fame    Twitter   Terms of Service    Privacy Policy    Contact Us    Archives   Tell A Friend