ASP.NET ile Google Api Kullanarak Hava Durumu Almak

Başlıktan da anlaşılacağı gibi Google Api yi kullanarak şehirlerin hava sıcaklığı, nem oranı, rüzgarın hızı gibi bilgileri alacağız. İstenilirse 5 günlük durum bilgisini de almamız mümkün fakat bu örnekte 1 günlük bilgiyi alacağız. İlk başta Meteoroloji müdürlüğünün yayınladığı bilgilerini kullanarak yapmak istedim fakat ne hikmetse sağlıklı çalışmıyor, muhtemelen bilginin çekildiğini anlayıp engelliyorlar. İlgilenenler için ilgili adres http://www.dmi.gov.tr/FTPDATA/analiz/sonSOA.xml burası. Buranın bir eksiği de görsellik için bir adres verilmemesi, bunun içinde ayrı bir mekanizmayla resimleri alıyordum, dünya kadar zaman harcamıştım ama elimde sadece koskoca bir hiç kaldı. İlgilenenlere kodları gönderebilirim.

Google Api ASP.NET C# Hava DurumuDönelim konumuza, nedenini bilmiyorum ama Google’ ya her konuda çok güveniyorum, dedim madem öyle Google’ nin hizmetini kullanayım. Klasik bir xml okuyucuyla (reader) bilgileri alıp istediklerimi aldım fakat ne göreyim gelen bilgiler İngilizce :| Tarayıcıdan adresi yazınca Türkçe kodlarla çekince İngilizce gelmesi hayra alamet değildi, neyse aradım taradım hl=tr parametresinin de eklenmesi gerektiğini anladım. Ama gelin görünki adres satırından bu bilgiyi gönderebilmek için & (ve (ampersand)) imininde olması gerekiyor. Bu imi direk XML adresi olarak veremiyorsunuz bunu zaten site haritası yaparken yıllar önce öğrenmiştik, yerine & ifadesini   yazıyorduk. Ama ne var ki bu şekilde istek   gönderdiğimde hiç bir değişiklik olmuyordu. Saatler geçiyor sinirden neyapacağımı nasıl bir izleyeceğimi bilmiyordum, kontrol çalışıyor fakat veriler İngilizce geliyordu, dedimki madem öyle Google Translate ile Türkçe’ ye çevireyim, hoop dedim yok daha neler altı üstü hava durumu gösterilecek. Şunu da söylemeliyim o kadar araştırmama rağmen hiç bir çözüme ulaşamadım en sonunda Google’ ya bile yazdım. Kulağı belki biraz sıkıntılı bir şekilde tuttum fakat saat gibi çalışıyor. Performans olarak da fena değil gibi. Şunu da belirtmek isterim, yazıyı bu kadar uzatmamda ki amaç zaman zaman ufak gibi görünenproblemler nedeniyle işlerin nasıl yoldan çıktığını göstermek.

Default.aspx

    <style type="text/css">
    body{
        font-family:Arial;
        font-size:13px;
    }
    .hava{
        padding:5px;
        border:1px solid #e7e7e7;
        border-right-width:2px;
        border-bottom-width:2px;
        width:250px;
    }
    .sehir{
        font-size:11px;
        background-color:#ffba00;
    }

    .ikon img{
       float:left;
       margin:5px;
    }

    .derece{
        color:#ffba00;
        font-size:15px;
        display:inline-block;
        margin-top:2px;
        font-weight:bold;
    }
    .nem,.ruzgar{display:block;font-size:9px;}
    </style>
 <div class="hava">
        <img src="http://www.google.com.tr/intl/tr/logos/Logo_50wht.gif" alt="Google" />
        <br />
         <asp:DropDownList runat="server" ID="ddlSehirler" CssClass="sehir">
            <asp:ListItem>ADANA</asp:ListItem>
            <asp:ListItem>ADIYAMAN</asp:ListItem>
            <asp:ListItem>AFYONKARAHİSAR</asp:ListItem>
            <asp:ListItem>AĞRI</asp:ListItem>
            <asp:ListItem>AKSARAY</asp:ListItem>
            <asp:ListItem>AMASYA</asp:ListItem>
            <asp:ListItem>ANKARA</asp:ListItem>
            <asp:ListItem>ANTALYA</asp:ListItem>
            <asp:ListItem>ARDAHAN</asp:ListItem>
            <asp:ListItem>ARTVİN</asp:ListItem>
            <asp:ListItem>AYDIN</asp:ListItem>
            <asp:ListItem>BALIKESİR</asp:ListItem>
            <asp:ListItem>BARTIN</asp:ListItem>
            <asp:ListItem>BATMAN</asp:ListItem>
            <asp:ListItem>BAYBURT</asp:ListItem>
            <asp:ListItem>BİLECİK</asp:ListItem>
            <asp:ListItem>BİNGÖL</asp:ListItem>
            <asp:ListItem>BİTLİS</asp:ListItem>
            <asp:ListItem>BOLU</asp:ListItem>
            <asp:ListItem>BURDUR</asp:ListItem>
            <asp:ListItem>BURSA</asp:ListItem>
            <asp:ListItem>ÇANAKKALE</asp:ListItem>
            <asp:ListItem>ÇANKIRI</asp:ListItem>
            <asp:ListItem>ÇORUM</asp:ListItem>
            <asp:ListItem>DENİZLİ</asp:ListItem>
            <asp:ListItem>DİYARBAKIR</asp:ListItem>
            <asp:ListItem>DÜZCE</asp:ListItem>
            <asp:ListItem>EDİRNE</asp:ListItem>
            <asp:ListItem>ELAZIĞ</asp:ListItem>
            <asp:ListItem>ERZİNCAN</asp:ListItem>
            <asp:ListItem>ERZURUM</asp:ListItem>
            <asp:ListItem>ESKİŞEHİR</asp:ListItem>
            <asp:ListItem>GAZİANTEP</asp:ListItem>
            <asp:ListItem>GİRESUN</asp:ListItem>
            <asp:ListItem>GÜMÜŞHANE</asp:ListItem>
            <asp:ListItem>HAKKARİ</asp:ListItem>
            <asp:ListItem>HATAY</asp:ListItem>
            <asp:ListItem>IĞDIR</asp:ListItem>
            <asp:ListItem>ISPARTA</asp:ListItem>
            <asp:ListItem>İSTANBUL</asp:ListItem>
            <asp:ListItem>İZMİR</asp:ListItem>
            <asp:ListItem>KAHRAMANMARAŞ</asp:ListItem>
            <asp:ListItem>KARABÜK</asp:ListItem>
            <asp:ListItem>KARAMAN</asp:ListItem>
            <asp:ListItem>KARS</asp:ListItem>
            <asp:ListItem>KASTAMONU</asp:ListItem>
            <asp:ListItem>KAYSERİ</asp:ListItem>
            <asp:ListItem>KIRIKKALE</asp:ListItem>
            <asp:ListItem>KIRKLARELİ</asp:ListItem>
            <asp:ListItem>KIRŞEHİR</asp:ListItem>
            <asp:ListItem>KİLİS</asp:ListItem>
            <asp:ListItem>KOCAELİ</asp:ListItem>
            <asp:ListItem>KONYA</asp:ListItem>
            <asp:ListItem>KÜTAHYA</asp:ListItem>
            <asp:ListItem>MALATYA</asp:ListItem>
            <asp:ListItem>MANİSA</asp:ListItem>
            <asp:ListItem>MARDİN</asp:ListItem>
            <asp:ListItem>MERSİN</asp:ListItem>
            <asp:ListItem>MUĞLA</asp:ListItem>
            <asp:ListItem>MUŞ</asp:ListItem>
            <asp:ListItem>NEVŞEHİR</asp:ListItem>
            <asp:ListItem>NİĞDE</asp:ListItem>
            <asp:ListItem>ORDU</asp:ListItem>
            <asp:ListItem>OSMANİYE</asp:ListItem>
            <asp:ListItem>RİZE</asp:ListItem>
            <asp:ListItem>SAKARYA</asp:ListItem>
            <asp:ListItem>SAMSUN</asp:ListItem>
            <asp:ListItem>SİİRT</asp:ListItem>
            <asp:ListItem>SİNOP</asp:ListItem>
            <asp:ListItem>SİVAS</asp:ListItem>
            <asp:ListItem>ŞANLIURFA</asp:ListItem>
            <asp:ListItem>ŞIRNAK</asp:ListItem>
            <asp:ListItem>TEKİRDAĞ</asp:ListItem>
            <asp:ListItem>TOKAT</asp:ListItem>
            <asp:ListItem>TRABZON</asp:ListItem>
            <asp:ListItem>TUNCELİ</asp:ListItem>
            <asp:ListItem>UŞAK</asp:ListItem>
            <asp:ListItem>VAN</asp:ListItem>
            <asp:ListItem>YALOVA</asp:ListItem>
            <asp:ListItem>YOZGAT</asp:ListItem>
            <asp:ListItem>ZONGULDAK</asp:ListItem>
        </asp:DropDownList><br />
        <span runat="server" ID="spnIkon" class="ikon"></span>
        <span runat="server" ID="spnDerece" class="derece"></span>
        <span runat="server" ID="spnDurum" class="durum"></span>
        <span runat="server" ID="spnNem" class="nem"></span>
        <span runat="server" ID="spnRuzgar" class="ruzgar"></span>
    </div>

Default.aspx.cs

try
        {
            string strGelenIl = Request.QueryString["Il"];
            if (string.IsNullOrEmpty(strGelenIl))
            {
                strGelenIl = "TRABZON";
            }
            WebClient webClient = new WebClient();
            string strKaynak = webClient.DownloadString("http://www.google.com/ig/api?weather=" + strGelenIl + "&hl=tr");
            TextReader trOkuyucu = new StringReader(strKaynak);
            webClient.Dispose();

            ddlSehirler.Attributes.Add("onchange", "location.href='?Il='+this.value+''");
            ddlSehirler.SelectedValue = strGelenIl;

            XmlTextReader rdr = new XmlTextReader(trOkuyucu);
            XmlDocument myxml = new XmlDocument();
            myxml.Load(rdr);
            XmlNodeList xnlHedef = myxml.SelectNodes("xml_api_reply/weather/current_conditions");

            string strDerece = xnlHedef.Item(0).SelectSingleNode("temp_c").Attributes["data"].InnerText;
            string strDurum = xnlHedef.Item(0).SelectSingleNode("condition").Attributes["data"].InnerText;
            string strNem = xnlHedef.Item(0).SelectSingleNode("humidity").Attributes["data"].InnerText;
            string strIkon = "<img src="\" alt="\&quot;&quot;" />";
            string strRuzgar = xnlHedef.Item(0).SelectSingleNode("wind_condition").Attributes["data"].InnerText;
            spnIkon.InnerHtml = strIkon;
            spnDurum.InnerText = strDurum;
            spnDerece.InnerText = strDerece + " °C";
            spnNem.InnerText = strNem;
            spnRuzgar.InnerText = strRuzgar;

            trOkuyucu.Dispose();
            rdr.Close();
            rdr = null;
            myxml = null;
            xnlHedef = null;
        }
        catch (Exception)
        {

        }

İlgili dosyaları buradan indirebilirsiniz. Bir yazının daha sonuna geldik, kalın sağlıcakla.