ASP.NET web client for Google Web API






4.44/5 (17 votes)
Jan 26, 2003
2 min read

251139

2870
Exploring Google Web API
Introduction
Recently I got an opportunity to explore the Google Web API which can be downloaded from the Google site. So I decided to code the web-client which is very easy and interesting too! The article focuses on developing the Web-Client with which you can search items from your site itself.
Installation & Setup
You must download the google web api first! Then follow the instructions below.
- Create the folder like "Net" within "wwwroot" folder and make that folder web application.
- Create "bin" sub-folder within the "Net" folder.
- Make
GoogleProxy.cs
using the WSDL tool and compileGoogleProxy.cs
into the .net assembly usingcsc
command to generate the proxy.>wsdl /l:cs /o:GoogleProxy.cs "http://localhost/Net/GoogleSearch.wsdl">http://localhost/Net/GoogleSearch.wsdl
/n:GoogleWebService
This generates theGoogleProxy.cs
. "GoogleSearch.wsdl
" is found in the API you have downloaded.>csc /out:GoogleProxy.dll /t:library /r:system.dll, system.web.dll,
system.xml.dll, system.web.services.dll GoogleProxy.cs
This generates the .net assembly, GoogleProxy.dll. Copy the dll file into "bin" folder. Your ASP.NET page will ultimately call the web-callable methods and properties exposed by this dll.
- Write
GoogleClient.aspx
file to create the UI and to consume the services exposed by google web api, to be precise GoogleProxy.dll in our case. - Browse
http://localhost/Net/GoogleClient.aspx
. That's it!
Why proxy?
A proxy resides on the consumer's machine and acts as a rely between the consumer and the web service. When we build the proxy, we use WSDL file to create a map that tells the consumer what methods are available and how to call them. The consumer then calls the web method that is mapped in the proxy, which in turn, makes calls to the actual web service over the Internet. The proxy handles all of the network-related work and sending of data, as well as managing the underlying WSDL so the consumer doesn't have to. When we reference the web service in the consumer application, it looks as if it's part of the consumer application itself.
Using the code
The code is pretty straight forward.
<%@ Page Language="C#" %> <@ import Namespace="GoogleWebService" > //Remember,GoogleWebService is the namespace you named while creating the proxy! <script runat="server"> string key="licence key you got from google"; /* I have declared the key string variable as global variable since the key variable is to be passed every time you call the methods. */ void Page_Load() { lblSpellSug.Text=""; //Label to display the Spelling Suggestion lblResultCount.Text=""; //Label to display the Estimated total result count lblSearchTime.Text=""; //Label to display the server time to return the search results, //measured in seconds. } void btnSearch_Click(Object sender, EventArgs e) { //creating the instance of the GoogleSearch class to invoke required methods GoogleSearchService obj=new GoogleSearchService(); //spelling checking and suggesting if entered wrong string suggestion=obj.doSpellingSuggestion(key,Request.Form["txtPhrase"]); if (suggestion!=null) { lblSpellSug.Text="Suggestion: "+ suggestion; } //searching the phrase..... //Regarding the parameters refer to the Google API GoogleSearchResult res=obj.doGoogleSearch(key, Request.Form["txtPhrase"], 0, 10, false,"",false,"","",""); lblResultCount.Text="Est. Total Result Count: " + Convert.ToString(res.estimatedTotalResultsCount); //to display the total estimated result count lblSearchTime.Text= "Search Time: " + Convert.ToString(res.searchTime) + "sec";//search Time //displaying the results Returned by the Search in tabular using the Table control. ResultElement[] result=res.resultElements; foreach(ResultElement r in result) { ResultTable.CellSpacing=1; ResultTable.CellPadding=2; //formatting the Server control Table TableRowCollection trCol=ResultTable.Rows; //ResultTable is the instance created for Table class //creating new Table Row and adding to the TableRowCollection TableRow tr=new TableRow(); trCol.Add(tr); TableCellCollection tcCol=tr.Cells; //creating new Table Cell, assigning the title and the summary //of the search result. TableCell tc=new TableCell(); tc.Text="<a href="+ r.URL +">"+ r.title + "</a>" + "<BR>" + r.summary; tcCol.Add(tc); } } </script>
Conclusion
Let's share the solution.