Google Hacks 2Nd Edition [Electronic resources] نسخه متنی

اینجــــا یک کتابخانه دیجیتالی است

با بیش از 100000 منبع الکترونیکی رایگان به زبان فارسی ، عربی و انگلیسی

Google Hacks 2Nd Edition [Electronic resources] - نسخه متنی

Tara Calishain

| نمايش فراداده ، افزودن یک نقد و بررسی
افزودن به کتابخانه شخصی
ارسال به دوستان
جستجو در متن کتاب
بیشتر
تنظیمات قلم

فونت

اندازه قلم

+ - پیش فرض

حالت نمایش

روز نیمروز شب
جستجو در لغت نامه
بیشتر
لیست موضوعات
توضیحات
افزودن یادداشت جدید







Hack 99. Program Google in 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 that
you would probably find most interesting are in the
Form1.cs code.

This hack provides basic code for a simple console Google search
application similar in function (and, in the case of Java [Hack #97] , form,
too) to those in Perl
Hack #98 ], et al.


Compiling and running this hack requires that you have the .NET
Framework (http://msdn.microsoft.com/netframework/downloads/updates/default.aspx)
installed.


9.16.1. The Code


Type this code and save it to a text file called
googly.cs:

// 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 in
place of insert key here, like so:

// Your Google API developer's key.
string googleKey = " 12BuCK13mY5h0E/34KN0cK@ttH3Do0R
";


9.16.2. 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. Fortunately, 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.


This is a remarkable bit of magic if you think about it: the
lion's share of interfacing to a web service
auto-generated from a description thereof.

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 this:

//--------------------------------------------------------------------------
// <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.


9.16.3. Running the Hack


Run Googly on the command line ["How to Run the
Hacks" in the Preface], passing it your Google
query:

C:\GOOGLY.NET\CS>googly.exe " query words "


The DOS command window isn't the best at displaying
and allowing scrollback of lots of output. To send the results of
your Google query to a file for perusal in your favorite text editor,
append > results.txt.


9.16.4. The Results


Here's a sample run:

% googly.exe " WSDL while you work "
Axis/Radio interop, actual and potential
http://www.intertwingly.net/stories/2002/02/08/
axisradioInteropActualAndPotentiall <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

/ 209