This page is likely outdated (last edited on 08 Nov 2007). Visit the new documentation for updated content.
Consuming a WebService
A web service makes it easy to access data and services offered by other people or running on a different machine. For example, Google provides a web service that allows your application to access many of the services it provides.
One capability provided by Google is the spell checker they use when you enter a search term. By consuming the web service, you can add a spell check function to your own application.
Table of contents |
First Steps: Creating the Local Stub
To create the local library that will invoke Google’s web service, we’ll use their WSDL file. You can get the Google WSDL files at http://api.google.com/GoogleSearch.wsdl. To generate the C# stub source type:
wsdl http://api.google.com/GoogleSearch.wsdl
This will create a file called GoogleSearchService.cs
, which contains the behind the scenes code needed to access the web service. Compile this file with:
mcs /target:library GoogleSearchService.cs -r:System.Web.Services
The above command line instructs the compiler to generate a library, and to reference (-r:) the System.Web.Services library.
Now you have the final stub assembly: GoogleSearchService.dll
Google License key
Google locks the web service with a special key to prevent misuse. You can obtain a key at https://www.google.com/accounts/NewAccount. This key allows ~50 actions per day. You must replace the sample key with yours.
Example 1: A Console Application
Now that you have an assembly for the web service, you can use it just like any other assembly.
The Code:
using System;
class SpellChecker
{
public static void Main (string [] args)
{
// Your license key
const string licensekey = "FCszK/FQFHJWQE1n5OkeGmZAWzCFY5+7";
// Create a Google Search object
GoogleSearchService Service1 = new GoogleSearchService ();
// Ask for spelling suggestion
// The first argument is your key
// The second one, the text the user should enter.
String suggestion = Service1.doSpellingSuggestion (licensekey, args[0]);
// Display the suggestion, if any
if (suggestion == null)
Console.WriteLine("[No suggestion]");
else
Console.WriteLine(suggestion);
}
}
Compile it like this:
mcs /r:GoogleSearchService.dll spellchecker.cs
Run it like this:
mono spellchecker.exe pupy
And it should print out the corrected word:
puppy
Example 2: A Webpage
You can also call a web service from a web page. First you will have to drop the stub GoogleSearchService.dll in your ASP.Net bin directory. The example is very simple to understand.
<%@ Page Language="C#" %>
<script runat="Server">
void Page_Load (object sender, EventArgs e) {
// Put your license key here
const string licensekey = "FCszK/FQFHJWQE1n5OkeGmZAWzCFY5+7";
// Create a Google Search object
GoogleSearchService Service1 = new GoogleSearchService ();
// Ask for spelling suggestion
// The first argument is your key
// The second one, the text the user should enter.
String suggestion = Service1.doSpellingSuggestion (licensekey, TextBox1.Text);
// Display the suggestion, if any
if (suggestion == null)
Label1.Text = "[No suggestion]";
else
Label1.Text = suggestion;
}
</script>
<html>
<body>
<h2>Hello WebService!</h2>
<form runat="server">
<p><asp:TextBox id="TextBox1" runat="server"></asp:TextBox></p>
<p><asp:Label id="Label1" runat="server"></asp:Label></p>
<p><input type="submit" value="Submit" runat="server"></input></p>
</form>
</body>
</html>
This will look like this:
[Image:google.png]
The code where the web service is accessed is marked red. To test the service enter “spelll checker” for example, and watch it correct your spelling.
Documentation
If you want to do more, you will require documentation of the web service. For Google’s API, one place to look is in the comments of the WSDL file. Individual web service providers are responsible for providing good documentation, though you may be able to use the C# introspection tools or read the source generated by wsdl
for a slightly better idea of how any given web service works.
Contributors
Johannes Roith, Shane Landrum