Web Servis Kullanarak Güncel Hava Durumunun Gösterilmesi
Bu yazıda kısaca, bir windows applicationda, web servisten alınan hava durumu bilgilerinin nasıl gösteriminin yapılabileceğini anlatmaya çalışacağım.
İlk önce boş bir windows application oluşturmamız gerekmekte. Şekildeki gibi Proje ismine “Hava Durumu” diyebilirsiniz.

Daha sonra oluşturduğumuz projeye aşağıdaki bilgilere sahip bir web servisi eklememiz gerekmekte. Hava durumu dışında, “http://www.webservicex.net” adresinde yaklaşık olarak 30-40 adet ücretsiz web servisi hizmeti bulunmakta. Bunların arasında IP bilgileri, Ülke bilgileri, Birim Çevrimi gibi çok fazla işe yarayan servisler bulunmakta.
URL : “http://www.webservicex.net/globalweather.asmx?wsdl”
Web Service Reference Name : “HavaDurumuWebService”

Daha sonra aşağıdaki gibi bir ekran görüntüsü hazırlamanız gerekmekte.

Formun “OnLoad” metoduna
private void Form1_Load(object sender, EventArgs e)
{HavaDurumuWebService.GlobalWeather havaDurumu = new Hava_Durumu.HavaDurumuWebService.GlobalWeather();
string xmlSehirler = havaDurumu.GetCitiesByCountry(“Turkey”);XmlDocument sehirler = new XmlDocument();
sehirler.LoadXml(xmlSehirler);XmlNodeList sehirNodes = sehirler.SelectNodes(“//City”);
foreach (XmlNode xNode in sehirNodes)
{comboBox1.Items.Add(xNode.InnerText);
}
}
Comboboxın SelectedIndexChanged Eventına ise
private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
{
string secilenSehir = comboBox1.SelectedItem.ToString();
HavaDurumuWebService.GlobalWeather havaDurumu = new Hava_Durumu.HavaDurumuWebService.GlobalWeather();
string xmlHavaDurumu = havaDurumu.GetWeather(secilenSehir, “Turkey”);XmlDocument xmlHava = new XmlDocument();
xmlHava.LoadXml(xmlHavaDurumu);XmlNode xTime = xmlHava.SelectSingleNode(“//Time”);
label4.Text = xTime.InnerText;
XmlNode xTemperature = xmlHava.SelectSingleNode(“//Temperature”);
label5.Text = xTemperature.InnerText;
}
kodlarınız yazarsak, programımız aşağıdaki resimlerde görüldüğü şekilde çalışacaktır.
Programın Source Codunu buradan indirebilirsiniz.
İlişkili Yazılar :
- DataTable to XMLDocument
- Google Translate Kullanarak .NeT de Dil Çevrimi
- Biztalk Error : “Cannot locate document specification because multiple schemas matched the message type” ve Çözümü
- Türkiye’deki İller ve ilçeleri
- .NeT’de Blok Olarak Seçme
- Proxy kullanarak yasaklı sitelere girmek
- SQL Connection String (Eng)
- XML ve XSLT Dosyalarını İşleyerek Ekrana HTML Çıktısı Veren ASPX Sayfası
- XSD Şemasından .NeT Classı Üretmek
- C# da Çalışan Uygulamanın Klasörünü Bulma
Tags: asmx, hava durumu, vs.net, web service, wsdl, xml, XmlDocument
Posted in .NeT 2008, Bilgisayar | 9 Comments »
| Önceki Yazı << Dataset ya da Datatable’dan Excele Bilgi Aktarma || Export Excel From Dataset, Datatable | Sonraki Yazı >> Java Semineri |




Kodunuzu çalıştırdığımda
xmlHava.LoadXml(xmlHavaDurumu);
satırında “Data at the root level is invalid” hatası alıyorum, bilginize.
kaynaktan gelen veri değişmiş gibi, rootdaki ismi değiştirince sorun düzelir. Sorun devam ederse kontrol edebilirim….
sivas şehrini şeçtiğim zaman funda arkadaşımızında verdiği gibi hata veriyo.
yazıyı 2008 de yazdığım için, aradan geçen sürede web servisin içeriği değişmiştir. En kısa zamanda konu ile iligli tekrar bir makale yazacağım.
iyi çalışmalar.
Öncelikle makaleniz için teşekkürler.Yalnız birşey sormak istiyorum cevap verirseniz sevinirim.
Time,Temperature gibi Xml Node’larını nasıl tespit ettiniz wsdl dosyasına bakarak?
wsdl dosyasından tespit ettiğimi söyleyemem. Kodu trace ederken
xmlHava.LoadXml(xmlHavaDurumu);
satırıyla oluşan XmlDocument nesnesinden tagları görebilirsiniz. Diğer kullanmak istediğiniz alanları da bu şekilde uygulamaya ekleyebilirsiniz.
İyi hoş güzel yalnız inanılmaz kötü bir web.service sürekli patlıyor… 5 dakikada bir invalid services hatası geliyor.
Line 49: [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://www.webserviceX.NET/GetWeather", RequestNamespace="http://www.webserviceX.NET", ResponseNamespace="http://www.webserviceX.NET", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)]
Line 50: public string GetWeather(string CityName, string CountryName) {
Line 51: object[] results = this.Invoke(“GetWeather”, new object[] {
Line 52: CityName,
Line 53: CountryName});
the operation has time out
devamlı buradan data çekmek yerine günde beş kere çalışan bir kod ile bir yere kaydetip, buradan gösterimi yapmanızı öneririm.