Makale Özeti

JQuery AutoComplete gibi farklı özelliklerden yararlanıyor olabilirsiniz. Böylesi durumlarda genelde kendi verilerimizi kullanırız. Fakat bu sefer biraz farklılık yaparak Google'ın Suggest değerlerini çekelim.

Makale

JQuery AutoComplete gibi farklı özelliklerden yararlanıyor olabilirsiniz. Böylesi durumlarda genelde kendi verilerimizi kullanırız. Fakat bu sefer biraz farklılık yaparak Google'ın Suggest değerlerini çekelim. 

 

Yaptığım araştırmaya göre Google bizlere http://clients1.google.com/complete/search?hl=tr&output=toolbar&q=test böyle bir servis sağlıyor. Burada QueryStringlere dikkat ederseniz hl ve g adında parametreler mevcut. Burada hl hangi dil sonuçlarında arama yapacağını ve g de hangi kelimeyi arayacağını ifade etmektedir. Biz de kod tarafında bu sayfaya dil ve kelimeyi ileterek Google'ın sağladığı değerlere ulaşabiliriz.

 

Örnek olarak böyle bir tablo oluşturdum. Buradan girilen kelime ve seçilen dile göre Google Suggestdeğerlerinin getirilmesi sağlanıyor. 

 

 

Aşağıdaki kodlar ekran görüntüsündeki tasarımını oluşturmaktadır. Bu tasarımdaki atanan eventlara göre Code Behind tarafında işlemler gerçekleştirilecektir.

<table>
    <tr>
        <td>
            Kelime Seçiniz
        </td>
        <td>
            <asp:TextBox ID="txtKelimeGir" Width="200" runat="server"></asp:TextBox>           
        </td>
    </tr>
    <tr>
        <td>
            Dil Seçiniz
        </td>
        <td>
                <asp:DropDownList ID="drpDil" Width="200"  runat="server">
                <asp:ListItem Selected="true" Text="Türkçe" Value="tr"></asp:ListItem>
                <asp:ListItem  Text="İngilizce" Value="en"></asp:ListItem>
            </asp:DropDownList>
        </td>
    </tr>
    <tr>
        <td colspan="2" align="right">
        <asp:Button ID="btnGoogleSuggest" OnClick="btnGoogleSuggest_Click" runat="server" Text="Değerleri Getir" />
        </td>
    </tr>
    <tr>
        <td>
            Dönen Sonuçlar
        </td>
        <td>
            <asp:Literal ID="lblXml" runat="server"></asp:Literal>
        </td>
    </tr>
</table>

 

Ve en son Code Behind tarafında Google Suggest değerlerini çekiyoruz. Google servisini xml olarak çekmeye çalıştığımda karakter uyuşmazlıkları çok sık yaşadığım için gidilen sayfanın kaynak kodunu alıp xml formatında tanıtmayı tercih ettim. Açıklama satırlarında yapılan işlemler daha detaylı olarak anlatılmaktadır.

protected void btnGoogleSuggest_Click(object sender, EventArgs e)
    {
        //DropDownliste seçilen dilin değeri alınır.
        string dil = drpDil.SelectedValue;
        //TextBoxa girilen değer alınır.
        string kelime = txtKelimeGir.Text;
        //Google Suggest Değelerini içeren Labelı ilk başta temizliyoruz.
        lblXml.Text = "";
        /*Burada Google Suggest değerlerini içeren servisin kaynak kodunu alıyoruz.
         * Xml olarak çekerken eşleşmeyen karakterler olduğu için böyle bir yol izliyoruz.
         * */
        WebRequest istek = HttpWebRequest.Create("http://clients1.google.com/complete/search?hl="+dil+"&output=toolbar&q="+kelime+"");
        WebResponse cevap = istek.GetResponse();
        StreamReader donenBilgiler = new StreamReader(cevap.GetResponseStream());
        string html = donenBilgiler.ReadToEnd();
         
        XmlDocument xdoc = new XmlDocument();
        //Tüm sayfayı çektiğimiz için sayfanın kaynak kodunu xml olarak yüklenmesi sağlıyoruz.
        xdoc.LoadXml(html);        
        XmlNodeList nodeList = xdoc.SelectNodes("toplevel/CompleteSuggestion/suggestion");
        //Burada alınan nodeları döngüye alıyoruz.
        foreach (XmlNode item in nodeList)
        {
            //Alınan nodeların data Attributes değerini tek tek labela yazdırıyoruz.
            lblXml.Text += item.Attributes["data"].InnerText + "<br>";
        } 
}

 

İyi Çalışmalar :)