Makale Özeti

Bu makalede Windows Live Api'lerinden Search Api'sinin nasıl kullanılacağını inceleyeceğiz.

Makale

         Merhabalar,

         Bu makalede Windows Live Api'lerinden Search Api'sinin nasıl kullanılacağını inceleyeceğiz. Api bir web servisi üzerinden çalışmaktadır. Bu Api'yi kullanarak geliştireceğiniz her uygulama Microsoft Developer Provisioning System'den bir application Id almalıdır. Öncelikle işlere bu Id'yi almakla başlayalım.

          Öncelikle browserımızdan http://search.msn.com/developer?mkt=en-us  adresine giriyoruz.

 

         Daha sonra bu ekrandan Create And Manage ApplicationId's'e tıklıyoruz ve açılan ekrana Windows Live accountu ile giriş yapıyoruz ve karşımıza uygulama bilgilerinin sorulduğu bir ekran geliyor.



         Bu ekrandaki ApplicationName adını dolduruyoruz ve şartları kabul ettiğimizi belirliyoruz.
        
         Bu işlem sonucunda karşımıza tüm id'lerimizin listelendiği ekran geliyor ve kayıt işlemimizi tamamlamış oluyoruz.

      Şimdi uygulamamızı geliştirmeye başlayalım. Öncelikle bir windows uygulamaı oluşturuyoruz.

      Uygulamamıza http://soap.search.msn.com/webservices.asmx?wsdl adresını web referans olarak ekliyoruz ve referans adını LiveSearchApi olarak değiştiriyoruz.Add Reference tuşuna basarak işlemimizi tamamlıyoruz.



         Şimdi eklediğimiz web servisi nasıl kullanacağımızı biraz inceleyelim.
 

            MSNSearchService insMSNSearchService = new MSNSearchService();
            SearchRequest insSearchRequest = new SearchRequest();
            SourceRequest[] insSourceRequest = new SourceRequest[1];
            insSourceRequest[0] = new SourceRequest();
            insSourceRequest[0].Source = SourceType.Web;

         Bu kısımda öncelikle MsnSearchService class'ının bir instance'ını alıyoruz. Sonrasında ise SearchRequest ve SourceRequest isimli nesneleri oluşturuyoruz. oluşturduğumuz Source request array'i tek boyutluydu. Bu arraydeki ilk nesneye SourceRequest nesnesinin bir instance'ını oluşturuyoruz ve tipini Web olarak belirliyoruz.

         Bu kısımda tipi web olarak belirlememiz web adresleri üzerinden bir sorgu yapacağımız anlamına geliyor. Bu enum'da phone, image, news gibi seçenekler de var. Bu nesnelerin kullanılma şekli sorgu yaptığımız mantıkla aynıdır.  Ancak önemli bir noktaya daha değinmek istiyorum.

         Aramamızı filtrelemek istersen SearchRequest nesnesinin Flags propertysini örneğin insSearchRequest.Flags = SearchFlags.DisableLocationDetection; şeklinde kullanabiliriz.
 

            insSearchRequest.Query = txtSearch.Text;
            insSearchRequest.Requests = insSourceRequest;
            insSearchRequest.AppID = "XXXXXXXXXXXXXXXX";
            insSearchRequest.CultureInfo = "tr-TR";
            SearchResponse insSearchResponse;

         Bu kısımda sorgumuzun kriterlerini tanımlıyoruz. Bu kriterler Query propertysinde aranacak metin, Requests Property'sinde SourceRequest nesnesi, AppId propertysinde kayıt olarak aldığımız applicationId, CultureInfo nesnesinde ise sorgulama yapacağımız culture tanımlaması. Ve daha sonrasında cevapları alabilmek için  SearchResponse nesnesi oluşturuyoruz.
 

            try
            {
                insSearchResponse = insMSNSearchService.Search(insSearchRequest);
                MessageBox.Show("Toplam " + insSearchResponse.Responses[0].Total.ToString() + " sonuç.");
                dgvResults.AutoGenerateColumns = false;
                dgvResults.DataSource = insSearchResponse.Responses[0].Results;
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.ToString());
            }

         Daha sonrasında ise insMSNSearchService nesnesinin Search metoduna SearchRequest nesnesini geçirerek çalıştırıyoruz ve dönen SearchResponse nesnesini biraz önce tanımladığımız değişkene atıyoruz. Burada SearchRequest oluştururken tek bir request oluşturmuştuk. Oda web request ti. Bundan dolayı metoddan dönen SearchResponse nesnesinin Responses collectionunda tek bir nesne olacaktır. Şimdi bu nesnenin propertylerine bakalım.

         Results : Aradığımız kritere uyan sonuçların döndüğü bir collectiondur. Varsayılan 10 kayıt dönmektedir.
         Source : Dönen sonuçların hangi source'a ait olduğuna ait bilgidir. Uygulamamızda Web olarak tanımlamıştık.
         Total    : Toplam dönen kayıt sayısıdır. Bu sayı live.com üzerinden aarama yaptığınızda yazan total sayısıdır.

Şimdi ise Dönen Response nesnesinin içinde bulunan Result nesnelerinde ne gibi özellikler var bunları inceleyelim. Bu nesnelerde Address, CacheUrl, DateTime, Description, DisplayUrl, Image, Location, Phone, ResultType, SearchTags, Source, Summary, Title, Url, Video property'leri bulunmaktadır. Bu propertyler yaptığımız arama tipine göre dolu gelmektedir. Veya cevap almak istediğimiz özellikleri  Source request neenesinin ResultFields propertysini kullanarak örneğin insSourceRequest[0].ResultFields=ResultFieldMask.All | ResultFieldMask.ResultType | ResultFieldMask.Summary; şeklinde belirleyebiliriz.


        
         Örnek uygulamaya ve kodlara download kısmından erişebilirsiniz. Umarım faydalı olmuştur.

         oztamer@hotmail.com
         tamer.oz@yazgelistir.com
         oztamer@hotmail.com
Ornek Uygulama