ASP.NET ve Google Ajax Web Search ile arama sonuçlarını Deserialize etmek için yazdığım Serializable GoogleAjaxWebSearch sınıfı |
||||||
Google 'ın bize sunduğu diğer hizmetlerden biri olan JSON yapısında web arama sonuçlarını döndüren "Google Ajax Web Search" servisi sayesinde
Google arama sonuçlarını HTML parse etmek zorunda kalmıyoruz. Bu servisi ASP.NET ile kullanmak ve kolay olmasını istiyorsak
Google 'dan gelen JSON tipindeki
arama sonuçlarını deserializable etmemiz ve bu JSON verisine özel Serializble bir nesne yazmamız gerekiyor. Bu
amaçla yazdığımım GoogleAjaxWebSearch sınıfını nasıl kullandığımızı ve JSON verisini nasıl deserializable ettiğimizi anlatacağım.
Normalde Google bize bu servisi kullanıcı (istemci) tarafında kullmamız için yapmış ama biz bunu sunucu tarafında yapmak da isteyebiliriz. Sunucu tarafında ASP.NET ve C# ile böyle bir kullanıma ihtayıcımız olduğunu farz ederek işlemlere başlayalım. Bir deneme yaparak önce Google ajax web search nasıl çalışıyor öğrenelim. Tarayıcımızın adres satırına "http://ajax.googleapis.com/ajax/services/search/web?v=1.0&hl=en&rsz=large&q=google%20ajax%20search" yazıp `enter` tuşuna basarsak uzun bir satır görürüz. Bu gördüğümüz, yaptığımız "google ajax search" aramasının JSON yapısıdaki sonuçlarını içeriyor. Bizim yapacağımız iş ise ASP.NET ile sunucu tarafında bu sonucu almak , JSON verisini deserializable etmek ve sonucu düzgün bir şekilde ekranda göstermek. Yeni bir Web Site Project oluşturduktan (Visual Studio ya da Expression Web ile) sonra projeye yeni bir web form ekleyelim. Sonra buradan yazdığım GoogleAjaxWebSearch sınıfını içeren dosyayı indirip direk olarak projenin App_Code klasörüne kopyalayalım. Daha sonra eklediğimiz aspx sayfasının codebehind dosyasına aşağıdaki isim uzaylarını ekleyelim : using System.Web.Script.Serialization; // deserialize işlemi için using System.IO; // input ve output işlemleri için using System.Text; // Encoding işlemleri için using System.Net; // HttpWebRequest,HttpWebResponse nesnelerini kullanmak için using gwebjsonserializable; // GoogleAjaxWebSearch ismini verdiğim nesneyi kullanmak için //Google'a istek yapmak ve cevap almak için // kullanacağımız gerekli .net nesnelerini yaratıyoruz. HttpWebRequest istek; // internet üzerinden http protoklünden web isteği yapmak için HttpWebResponse cevap; // cevabı almak için Encoding cevapKodlama; // cevabı encode etmek için StreamReader akis; // cevabı okumak için Uri ur; // Url yaratmak için // Google'a yollayacağımız sorguyu gerekli parametreleri (URL arguments) ekleyerek aşağıdaki satırda oluşturuyoruz. // Bu örnekte aradığımız şey: "google ajax search" string google = "http://ajax.googleapis.com/ajax/services/search/web?v=1.0&hl=en&rsz=large&q=" + Server.UrlEncode("google ajax search"); ur = new Uri(google); // Burada hazırladığımız soruguyu Google'a yolluyoruz istek = (HttpWebRequest)WebRequest.Create(ur); // Google'dan gelen cevabı alıyoruz cevap = (HttpWebResponse)istek.GetResponse(); cevapKodlama = Encoding.GetEncoding(cevap.CharacterSet); // Google cevabını özel encode ayarıyla birikte okuyoruz. akis = new StreamReader(cevap.GetResponseStream(), cevapKodlama); // Burada Google'dan gelen işlenmemiş json verisini alıyoruz. string json = akis.ReadToEnd(); // JSON verisini Deserialize etmek için JavaScriptSerializer // nesnesinden yararlanıyoruz. JavaScriptSerializer js = new JavaScriptSerializer(); // Burada GoogleAjaxWebSearch ismini verdiğim nesnenin yardımıyla // json verisini deserialize ediyoruz ve böylece verileri // googleajax nesnesinde atabiliyoruz. GoogleAjaxWebSearch googleajax = js.Deserialize<GoogleAjaxWebSearch>(json); // Ekranda önce google'dan adlığımız saf json verisini gösteriyoruz. Response.Write("Google'dan gelen json verisinin işlenmemiş hali: <br/>"); Response.Write("<pre>" + Server.HtmlEncode(json) + "</pre>"); // googleajax nesnesindeki tüm verilieri ekranda gösteriyoruz. Response.Write("Google'dan gelen json verisinin yazdığım GoogleAjaxWebSearch class ile işlenmiş hali: <br/>"); Response.Write("<br/> <b>ResponseStatus : </b> " + googleajax.responseStatus ); Response.Write("<br/> <b >CurrentPageIndex : </b> " + googleajax.responseData.cursor.currentPageIndex ); Response.Write("<br/> <b >MoreResultsUrl : </b> " + googleajax.responseData.cursor.moreResultsUrl ); Response.Write("<br/> <b >EstimatedResultCount : </b> " + googleajax.responseData.cursor.estimatedResultCount + "<br/>"); for (int i = 0; i < googleajax.responseData.results.Count; i++) { Response.Write("<br/> <b>Title : </b> " + googleajax.responseData.results[i].title); Response.Write("<br/><b> VisibleUrl : </b>" + googleajax.responseData.results[i].visibleUrl); Response.Write("<br/><b> Url :</b> " + googleajax.responseData.results[i].url); Response.Write("<br/><b> Label :</b> " + googleajax.responseData.cursor.pages[i].label); Response.Write("<br/><b> Start :</b> " + googleajax.responseData.cursor.pages[i].start); Response.Write("<br/>"); } ![]() Uygalamayı bitirmiş olduk. Uygulama dosyalarını buradan indirip çalışıtırabilirsiniz. Google 'ın bize sunduğu bu servisi farklı sonuçlar döndürecek url parametrelerini (URL Arguments) kullanmak için buradan Google Ajax Search API reference sayfasının "Standard URL Arguments" başlığı altındaki yazıyı okuyarak parametrelerin ne anlama geldiklerini anlayabilirsiniz. Daha önce dediğim gibi bu sunucu tarafında bu servisi kullandığımız için Google Ajax Search API kullanmak yerine direk olarak yarattığımız URL ile sunucu tarafında sonuçları alıyoruz ve gelen JSON verisini yine sunucu tarafında Deserialize ediyoruz. |
||||||
|
||||||
|
May 2013 (1)
July 2010 (1)
April 2010 (4)
March 2010 (1)
February 2010 (3)
December 2009 (2)
November 2009 (1)
October 2009 (4)
September 2009 (16)
August 2009 (21)
July 2009 (4)
July 2010 (1)
April 2010 (4)
March 2010 (1)
February 2010 (3)
December 2009 (2)
November 2009 (1)
October 2009 (4)
September 2009 (16)
August 2009 (21)
July 2009 (4)
Jquery ve Seçiciler (J ..
Mysql ile Türkçe Karak ..
ASP.NET'de sunucu kont ..
Jquery ile Form ToolTi ..
Sitenizin arama motorl ..
PHP ve Jquery Ajax ile ..
PHP ile XML verisiyle ..
Jquery ve PHP ile Ajax ..
PHP ile sitemap (site ..
Jquery ile dinamik res ..
Mysql ile Türkçe Karak ..
ASP.NET'de sunucu kont ..
Jquery ile Form ToolTi ..
Sitenizin arama motorl ..
PHP ve Jquery Ajax ile ..
PHP ile XML verisiyle ..
Jquery ve PHP ile Ajax ..
PHP ile sitemap (site ..
Jquery ile dinamik res ..
Etiketler
| $.each | $.getjson | Ajax | Anahtar-değer | Arama-merkezi | Arama-sonuçları | Asp.net | Binary-data | Button | Css | Div | Google | Gridview | Hareket | Hareketli | Html-parse | Javascript | Jquery | Json | Linq | Linq-to-sql | Php | Style | Veri | Veritabanı | Veritabanı-işlemleri |arama
Loading
sosyal




