Click here to Skip to main content
15,884,298 members
Articles / Web Development / IIS

How to Make a Simple WebService and Consume It

Rate me:
Please Sign up or sign in to vote.
3.47/5 (33 votes)
11 Sep 2004CPOL4 min read 329.3K   49   22
How to make a simple WebService and consume it

Introduction

We all talk about webservices, webservices can do this and webservices can do that. But when we are asked to make one, we hesitate. Maybe it's because we never made a webservice before, and all the time playing with Webforms and Windows Forms or even Console Applications. By the way, I love Console applications. In this article, I will show you how to create a simple webservice that is consumed by a Console application client.

Making the WebService

First, start your Visual Studio .NET, and in the project type, select ASP.NET WebService. In the left pane, choose the language of your choice. In this example, I will be using Visual C# .NET. Once you select the project, a page will appear which will be more like a design page, switch to its code view. In the code view, you can see lot of comments and C# code already written for you. You will also see that at the bottom, there is a method HelloWorld which is written for you by default, so you can test your service and of course say hello to the world. After removing the unwanted code and comments, your code will look like this:

C#
using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Diagnostics;
using System.Web;
using System.Web.Services;

namespace WebServiceExample
{
    public class Service1 : System.Web.Services.WebService
    {
        public Service1()
        {
            
            InitializeComponent();
        }
        
        // Add the Description Attribute so you
        // will know the purpose of your WebService
        [WebMethod(Description="This Method prints HelloWorld")]
        public string HelloWorld()
        {
            return "Hello World";
        }
    }
}

Let's dig into this small code. [WebMethod] Attribute denotes that this method will be used by the clients, also this method has to be public in order for a client to use it. Description inside the WebMethod Attribute just gives the method more meaning. Don't worry about the InitializeComponent() method since it's written by default.

Running the WebService

OK, now you have made your first kick ass WebService (without even writing a single line of code). Let's run it and check whether it gives the correct result or not. In the Solution Explorer, right click on the .asmx file, and select View in Browser as shown below:

Sample screenshot

Once you click on "View in Browser", the next screen you will see will be something like this:

Sample screenshot

I have erased most of the stuff, so you can only see the method that you need in this example. Below, you can see the method HelloWorld and the description you wrote for the method.

Now, click on the HelloWorld method. I don't want to scare you with all the SOAP and HTTP code produced, so I am only going to paste the screen shot which will be relevant to this example.

Sample screenshot

Alright, so far so good. Now, just press the Invoke button to see the result of your method named HelloWorld().

Sample screenshot

This is cool. You have just tested your first webservice and it ran since you didn't coded it. I know what you are thinking right now. Is the client going to see the result like this strange format (this is XML format). Well, of course not. That's why you need to make a Proxy class which consumes this service.

Making a Proxy Client:

Let's make a Console application which consumes this service. You can use any language and platform to consume this service, that's the purpose of XML WebService. Now, this procedure requires some mouse clicking :). So I will write down the steps instead of pasting the screen shots.

  1. Start a new project which will be a Console Application in Visual C# .NET.
  2. Once you see the code view in the Console application, right click on the project name from the Solution Explorer. Remember that project name will be written in bold.
  3. Click on "Add Web Reference".
  4. Paste the URL of your WebService. You can get the URL of your WebService when you view your webservice in Internet Explorer or any other browser.
  5. Click GO.
  6. Your webservice will be loaded. In the Web Reference Name textbox, write "MyService" and click Add Reference.
  7. You will see that the web reference has been added in your Solution Explorer, meaning that webservice is ready to kick some butt.

Now, all you have to do is to make the instance of the WebService class using the reference name that you provided, which is "MyService".

C#
using System;

namespace MyClient
{
    class Class1
    {        
        [STAThread]
        static void Main(string[] args)
        {
            // Make an instance of the WebService Class
            // using the Web Reference you provided
            MyService.Service1 service = new MyService.Service1(); 
            // Assign message what ever is returned
            // from HelloWorld in this case "HelloWorld"
            string message = service.HelloWorld(); 
            // Prints out the message on the screen
            Console.WriteLine(message); 
        }
    }
}

And that's it. You use the webservice class just like any other class. Something you need to keep in mind is that if you decide to make a new method in your webservice and want to make it available to the client, then always remember to build your webservice solution so that the assembly can be updated. If you don't build your webservice, you won't be able to see the methods on the client side.

I guess that's it!!

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)


Written By
Web Developer
United States United States
My name is Mohammad Azam and I have been developing iOS applications since 2010. I have worked as a lead mobile developer for VALIC, AIG, Schlumberger, Baker Hughes, Blinds.com and The Home Depot. I have also published tons of my own apps to the App Store and even got featured by Apple for my app, Vegetable Tree. I highly recommend that you check out my portfolio. At present I am working as a lead instructor at DigitalCrafts.




I also have a lot of Udemy courses which you can check out at the following link:
Mohammad Azam Udemy Courses

Comments and Discussions

 
QuestionHow to use this service from Online Pin
ktlinn12-Apr-15 14:14
ktlinn12-Apr-15 14:14 
QuestionWeb Service in HTML Pin
Member 1114999713-Oct-14 6:25
Member 1114999713-Oct-14 6:25 
GeneralMy vote of 1 Pin
Lars Bernstorff Hansen17-Sep-14 3:29
Lars Bernstorff Hansen17-Sep-14 3:29 
GeneralMy vote of 5 Pin
Sandesh M Patil8-Jun-12 7:04
Sandesh M Patil8-Jun-12 7:04 
QuestionInner Exception {"The remote server returned an error: NotFound."} Pin
darkhorse_code4-Apr-11 17:07
darkhorse_code4-Apr-11 17:07 
GeneralMy vote of 2 Pin
kingng2-Nov-10 2:39
kingng2-Nov-10 2:39 
GeneralPlease solve my problem Pin
Blue stone21-Dec-08 2:39
Blue stone21-Dec-08 2:39 
General[Message Removed] Pin
hankjmatt13-Oct-08 21:42
hankjmatt13-Oct-08 21:42 
GeneralHelp Please Pin
DR Delphi13-Oct-08 14:33
DR Delphi13-Oct-08 14:33 
GeneralGood,But it is too simple. Pin
careast16-Mar-08 20:34
careast16-Mar-08 20:34 
GeneralGood Introduction Pin
Jitku1-Nov-07 12:47
Jitku1-Nov-07 12:47 
GeneralRe: Good Introduction Pin
Member 14713651-Apr-10 20:26
Member 14713651-Apr-10 20:26 
GeneralMisleading info Pin
Pateprad21-Jan-07 23:20
Pateprad21-Jan-07 23:20 
GeneralRe: Misleading info Pin
azamsharp22-Jan-07 13:06
azamsharp22-Jan-07 13:06 
QuestionRe: Misleading info Pin
adityareddyp9-Oct-07 7:45
adityareddyp9-Oct-07 7:45 
QuestionHow to Use Webservice tranfer pass Proxy? Pin
khoadd21-Jul-06 18:38
khoadd21-Jul-06 18:38 
Questionstandalone soap service Pin
frohwein20-Jul-06 4:18
frohwein20-Jul-06 4:18 
GeneralError Handling Pin
skrishnasarma26-May-05 5:18
skrishnasarma26-May-05 5:18 
GeneralGood introduction Pin
Steven Campbell12-Sep-04 5:57
Steven Campbell12-Sep-04 5:57 
GeneralRe: Good introduction Pin
azamsharp12-Sep-04 7:02
azamsharp12-Sep-04 7:02 
GeneralRe: Good introduction Pin
Willis King13-Sep-04 8:19
sussWillis King13-Sep-04 8:19 
GeneralRe: Good introduction Pin
14-Mar-05 14:08
suss14-Mar-05 14:08 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.