Programming the Google Web API with C# and .NET
Create GUI and console Google search applications with C# and the .NET framework.
The Google Web APIs Developer's Kit includes a sample C# Visual Studio .NET (http://msdn.microsoft.com/vstudio/) project for a simple GUI Google search application (take a look in the dotnet/CSharp folder). The functional bits you'd probably find most interesting are in the Form1.cs code.
This tip provides basic code for a simple console Google search application similar in function (and, in the case of Java [Tip #56], form, too) to those in Perl [Tip #50], Python [Tip #57], et al.
|
The Code
// googly.cs // A Google Web API C# console application // Usage: googly.exe «query» // Copyright (c) 2002, Chris Sells. // No warranties extended. Use at your own risk. using System; class Googly { static void Main(string[] args) { // Your Google API developer's key string googleKey = "insert key here"; // Take the query from the command-line if( args.Length != 1 ) { Console.WriteLine("Usage: google.exe «query»"); return; } string query = args[0]; // Create a Google SOAP client proxy, generated by: // c:\» wsdl.exe http://api.google.com/GoogleSearch.wsdl GoogleSearchService googleSearch = new GoogleSearchService( ); // Query Google GoogleSearchResult results = googleSearch.doGoogleSearch(googleKey, query, 0, 10, false, "", false, "", "latin1", "latin1"); // No results? if( results.resultElements == null ) return; // Loop through results foreach( ResultElement result in results.resultElements ) { Console.WriteLine( ); Console.WriteLine(result.title); Console.WriteLine(result.URL); Console.WriteLine(result.snippet); Console.WriteLine( ); } } }
Remember to insert your Google developer's key (e.g., 12BuCK13mY5h0E/34KN0cK@ttH3Do0R) in place of "insert key here":
// Your Google API developer's key string googleKey = "12BuCK13mY5h0E/34KN0cK@ttH3Do0R";
Compiling the Code
Before compiling the C# code itself, you must create a Google SOAP client proxy. The proxy is a wodge of code custom built to the specifications of the GoogleSearch.wsdl file, an XML-based description of the Google Web Service, all its methods, parameters, and return values. Thankfully, you don't have to do this by hand; the .NET Framework kit includes an application, wsdl.exe, that does all the coding for you.
|
Call wsdl.exe with the location of your GoogleSearch.wsdl file like so:
C:\GOOGLY.NET»wsdl.exe GoogleSearch.wsdl
If you don't happen to have the WSDL file handy, don't fret. You can point wsdl.exe at its location on Google's web site:
C:\GOOGLY.NET\CS»wsdl.exe http://api.google.com/GoogleSearch.wsdl
Microsoft (R) Web Services Description Language Utility
[Microsoft (R) .NET Framework, Version 1.0.3705.0]
Copyright (C) Microsoft Corporation 1998-2001. All rights reserved.
Writing file 'C:\GOOGLY.NET\CS\GoogleSearchService.cs'.
The end result is a GoogleSearchService.cs file that looks something like:
//-------------------------------------------------------------------------- // «autogenerated» // This code was generated by a tool. // Runtime Version: 1.0.3705.288 // // Changes to this file may cause incorrect behavior and will be lost if // the code is regenerated. // «/autogenerated» //-------------------------------------------------------------------------- // // This source code was auto-generated by wsdl, Version=1.0.3705.288. // using System.Diagnostics; using System.Xml.Serialization; using System; using System.Web.Services.Protocols; using System.ComponentModel; using System.Web.Services; ... public System.IAsyncResult BegindoGoogleSearch(string key, string q, int start, int maxResults, bool filter, string restrict, bool safeSearch, string lr, string ie, string oe, System.AsyncCallback callback, object asyncState) { return this.BeginInvoke("doGoogleSearch", new object[] { key, q, start, maxResults, filter, restrict, safeSearch, lr, ie, oe}, callback, asyncState); } ...
Now on to googly.cs itself:
C:\GOOGLY.NET\CS»csc /out:googly.exe *.cs
Microsoft (R) Visual C# .NET Compiler version 7.00.9466
for Microsoft (R) .NET Framework version 1.0.3705
Copyright (C) Microsoft Corporation 2001. All rights reserved.
Running the Tip
Run Googly on the command line, passing it your Google query:
C:\GOOGLY.NET\CS»googly.exe "query words"
|
The Results
% googly.exe "WSDL while you work"
Axis/Radio interop, actual and potential http://www.intertwingly.net/stories/2002/02/08/
axisradioInteropActualAndPotential.html «b»...«/b» But
«b»you«/b» might find more exciting services here
«b»...«/b» Instead, we should «b»work«/b»
together and«br» continuously strive to «b»...«/b»
«b»While«/b» «b»WSDL«/b» is certainly far from perfect and has many «b»...«/b»
...
Simplified «b»WSDL«/b»
http://capescience.capeclear.com/articles/simplifiedWSDL/
«b»...«/b» So how does it «b»work«/b»?
«b»...«/b» If «b»you«/b» would like to edit
«b»WSDL«/b» «b»while«/b» still avoiding«br» all those XML tags, check out the «b»WSDL«/b» Editor in CapeStudio. «b»...«/b»
- Chris Sells and Rael Dornfest
« Previous Next »