Napojení na Google API v ASP.NET
Známý fulltextový vyhledávač Google nabízí své služby s určitým omezením také prostřednictvím webových služeb, skrze rozhraní nazvané Google Web APIs. Využijme tedy této možnosti a naučme se zároveň pracovat s webovými službami ve vývojovém prostředí Visual Studio .NET.
Co Google Web APIs nabízí?
Automaticky se nabízí myšlenka zpřístupnění vyhledávacího engine Googlu, což je pravda. Google Web APIs umožňuje nastavit pro každý vyhledávací dotaz celou řadu parametrů, stejně jako jeho webové rozhraní. Ovšem Google zpřístupňuje i další služby, a to konkrétně obsah Google Cache a opravy překlepů (spelling correction). My se podíváme na první a asi nejzajímavější službu a vytvoříme si jednoduchou ASPX stránku s vyhledávačem. Výsledek naší práce můžete otestovat v on-line ukázce (zdrojový kód).
Registrace účtu
Rozhraní vyhledávače nemůže používat jen tak někdo, ale pouze majitel řádně zaregistrovaného Google účtu. Pokud jej nemáte, vaše první kroky by měly vést na stránku Create a Google account, kde si tento účet můžete zadarmo zřídit vyplněním jednoduchého formuláře. Jedinou podmínkou je vlastnictví e-mailové adresy. Její existence bude ověřena běžným způsobem – zasláním potvrzovacího kódu ve formě URL, na kterou stačí kliknout, čímž se váš účet aktivuje. Jakmile se k němu přihlásíte, bude vám e-mailem zaslán licenční klíč ke službám Google Web APIs. Tento klíč byste si měli dobře uschovat, neboť vám umožňuje spouštět 1 000 dotazů denně, což by pro nekomerční účely mělo stačit.
Vytvoření ASP.NET projektu
Spustíme Visual Studio .NET, a vytvoříme nový projekt typu ASP.NET Web Application. Ten napojíme na Google API přidáním odkazu na webovou službu Google. V Solution Exploreru klikneme na projekt pravým tlačítkem a vybereme Add Web Reference. Do pole adresa vložíme adresu http://api.google.com/GoogleSearch.wsdl, což je soubor obsahující podrobnou specifikaci webových služeb a jejich parametrů v jazyce WSDL. Tento jazyk je standardem W3C a je postaven na XML, stejně jako téměř všechny moderní popisné jazyky. Dialog potvrdíme tlačítkem Add Reference. Tím ve jmenném prostoru našeho projektu vznikl podprostor com.google.api
a v něm sada tříd zpřístupňujících požadované služby. Můžeme se o tom přesvědčit pohledem do Object Browseru. K třídám, které se často označují jako proxy, se vrátíme později, nyní si připravíme stránku, která bude vyhledávací engine Googlu využívat.
K našim pokusům nám bude stačit jediná ASPX stránka, které nastavíme vlastnost pageLayout na hodnotu FlowLayout. Do stránky vložíme z ToolBoxu jedno textové pole (TextBox), za něj tlačítko (Button) a pod ně Repeater, který bude zobrazovat výsledky hledání. Tyto komponenty pojmenujeme Query, Submit a Results. Nastavíme nějak smysluplně text na tlačítku, například na „Hledat“.
Realizace hledání
Licenční číslo pro potřeby naší aplikace uschováme do konfiguračního souboru web.config v sekci appSettings, kterou pro tento účel vytvoříme.
<appSettings>
<!– licenční číslo pro Google Web APIs –>
<add key=“GoogleLicenseKey“ value=“ … “ />
</appSettings>
Ve zdrojovém kódu stránky deklarujeme potřebné jmenné prostory. Zapíšeme je do příkazu namespace
, aby kompilátor věděl, kde má hledat jmenný prostor Google proxy.
using System.Configuration;
using com.google.api;
Následuje dvojklik na tlačítko Hledat, čímž se v kódu stránky vytvoří metoda obsluhující události kliknutí na toto tlačítko. Do jejího těla vepíšeme následující kód:
private void Submit_Click(object sender, EventArgs e)
{
string key =
ConfigurationSettings.AppSettings[„GoogleLicenseKey“];
GoogleSearchService proxy = new GoogleSearchService();
GoogleSearchResult result = proxy.doGoogleSearch(
key, Query.Text, 0, 10, true, „“, false, „“, „“, „“);
proxy.Dispose();
Results.DataSource = result.resultElements;
Results.DataBind();
}
Nejdříve je načteno licenční číslo do proměnné key
. Následuje vytvoření instance třídy GoogleSearchResult
, což je samotná proxy třída webové služby. Její metody umožňují volat služby Google API synchronně i asynchronně. Názvy metod jsou v následující tabulce:
Popis | Synchronní volání | Asynchronní volání |
---|---|---|
Hledání | doGoogleSearch |
BegindoGoogleSearch EnddoGoogleSearch |
Získání stránky z cache | doGetCachedPage |
BegindoGetCachedPage EnddoGetCachedPage |
Korekce překlepů | doSpellingSuggestion |
BegindoSpellingSuggestion EnddoSpellingSuggestion |
Synchronní volání použijeme, pokud chceme pouze službu zavolat a výsledky ihned zpracovat. Kdyby zpracování mohlo počkat a chtěli bychom mezitím provést další operace, lze využít asynchronní volání.
Podívejme se na parametry, které nám metoda doGoogleSearch
nabízí:
Název | Typ | Popis |
---|---|---|
key |
string | Vaše licenční číslo. |
q |
string | Samotný vyhledávací dotaz. |
start |
int | Index prvního vráceného výsledku v množině všech výsledků. První výsledek má nulový index. |
maxResults |
int | Maximální počet vrácených výsledků. Nejvyšší hodnota je 10. |
filter |
bool | Určuje, zda má být použit filtr pro omezení velmi podobných výsledků, například pocházejících z jednoho webu. |
restricts |
string | Omezuje výsledky na vybraný Google Web index, například „Linux“. |
safeSearch |
bool | Určuje, zda mají být filtrovány výsledky nevhodné pro mládež. |
lr |
string | Omezuje výsledky na vybrané jazyky. |
ie |
string | Vstupní kódování, tento parametr je ignorován. |
oe |
string | Výstupní kódování, tento parametr je ignorován. |
Po provedení samotného hledání uvolníme systémové zdroje, které si hledání vyžádalo, a výsledky předáme Repeateru.
Zobrazení výsledku
Abychom nemuseli pokaždé uvádět úplný kvalifikovaný název všech tříd proxy, importujeme si jejich jmenný prostor v hlavičce stránky:
<%@ Import namespace=“(jmenný prostor).com.google.api“ %>
Nakonec vytvoříme v HTML kódu stránky šablonu pro jednotlivé položky Repeateru. Výsledky hledání budeme zobrazovat jako jednoduchý číslovaný seznam. Definujeme postupně šablony pro hlavičku, pro položku výsledků hledání a pro patičku Repeateru. Použijeme přitom tři vlastnosti výsledku, další si můžete najít v Object Browseru a jejich popis v referenční příručce Google Web APIs.
<asp:Repeater id=“Results“ runat=“server“>
<HeaderTemplate>
<ol>
</HeaderTemplate>
<ItemTemplate>
<li>
<a href=“<%#((ResultElement)Container.DataItem).URL%>“>
<%#((ResultElement)Container.DataItem).title %>
</a><br/>
<%# ((ResultElement)Container.DataItem).snippet %>
</li>
</ItemTemplate>
<FooterTemplate>
</ol>
</FooterTemplate>
</asp:Repeater>
A tím je naše práce hotova. Jak vidíte, za málo peněz jsme získali poměrně hodně muziky. Projekt lze samozřejmě dále vylepšovat, ovšem to již nechám zcela na vaší vlastní fantazii.
Odkazy a zdroje
Starší komentáře ke článku
Pokud máte zájem o starší komentáře k tomuto článku, naleznete je zde.
Mohlo by vás také zajímat
-
Doména .io v ohrožení: Co přinese předání Čagoských ostrovů?
10. října 2024 -
Praktické rady na zabezpečení redakčního systému WordPress
27. února 2023
Nejnovější
-
Výkonný a kompaktní: ASOME Max Studio s výjimečným poměrem cena/výkon
11. listopadu 2024 -
Šokující data od Microsoftu: Kyberútoky rostou o stovky procent!
8. listopadu 2024 -
Chcete jedinečnou doménu? Objevte koncovky FOOD, MEME a MUSIC!
7. listopadu 2024 -
OpenAI představilo novou funkci ChatGPT Search
6. listopadu 2024