Bir önceki Web Service Oluşturma adındaki yazımda Web Service oluşturma ve metodlarını test etmeyi gördük.Bu yazımızda ise yazılmış Web Service uygulamalarını nasıl kullanırız onu göreceğiz.
Her ne kadar kendi yazdığımız Web Service üzerinden çalışabilirsekte ben http://www.webservicex.net sitesindeki Web Service lerle çalışacağım.
Bu yazıda anlatılanların hepsi sizlerin yazdığı Web Service lerde de uygulanabilir.
Şimdi Web Service kullanımına değineceğiz.http://www.webservicex.net sitesinden bir Web Service seçelim.Ben hava durumunu bildiren Web Service kullanmayı tercih ediyorum.
Hava durumuyla ilgili Web Service hizmetini veren adres : http://www.webservicex.net/globalweather.asmx
(Bu adresi www.webservicex.net sitesi sizlere verecektir.)
Şimdi Visual Studio’ da bir Web ya da Windows projesi açın.Adı Web Service diye, illaki Web projelerinde kullanacak kanaatine varmayın.
Ben Windows projesi açıyorum.İçine birer ComboBox ve ListBox nesnesi koyuyorum.
Burada Address bölümüne “http://www.webservicex.net/globalweather.asmx” linkini yazacağız.Namespace bölümünde ise, kendi projemizde bu Web Service i kullanacağımız namespace adını vereceğiz.Ben namespace adını değiştirmiyorum.Discover ise, solution içinde Web Service uygulamanız varsa, bu buton ile Services bölümünde listeletip seçebiliyorsunuz.
Şimdi Address bölümüne .asmx uzantılı yolumuzu yazalım ve Go diyelim.Services bölümünde listelenen Web Service i seçip OK diyelim.
Bu işlemi yaptıktan sonra Server Explorer’da Service Referance dosyası eklenmiş.Ve bu dosyanın altında da ServiceReference1 adında bir dosya mevcut.Tabi bu isim başta Service Reference tanımlarken verdiğimiz namespace dir.
Öncelikle Web Service namespace i içindeki classtan nesne oluşturup, bu nesne üzerinden metodlarına ulaşalım.
ServiceReference1.GlobalWeatherSoapClient HavaDurumu = new ServiceReference1.GlobalWeatherSoapClient();
XmlDocument xml = new XmlDocument();
xml.LoadXml(HavaDurumu.GetCitiesByCountry("Turkey"));
XmlNodeList Nodelar = xml.SelectNodes("NewDataSet/Table/City");
foreach (XmlNode item in Nodelar)
{
comboBox1.Items.Add(item.InnerText);
//InnerText özelliği ile o anki node ın içindeki yazan değeri alır.
}
Yukarıda XmlDocument sınıfını kullanmamın sebebi, Web Service sonuç olarak XML dönmesidir.Ee doğal olarak XML sınıflarıyla dönen değerleri okuyorum.
(Not:http://www.webservicex.net/globalweather.asmx adresinden metodları bir kere test edip, dönen XML sonucuna göre elemanların isimlerini baktım.SelectNodes() metoduna rahatlıkla verebildim.)
Şu ana kadar ComboBox nesnemizi doldurduk.Şimdi de, ComboBox nesnemizin SelectedIndexChanged özelliğine gelelim.Her seçilen şehrin hava durumu bilgisini ListBox nesnemize yazdıralım.
private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
{
ServiceReference1.GlobalWeatherSoapClient HavaDurumu = new ServiceReference1.GlobalWeatherSoapClient();
listBox1.Items.Clear();
XmlDocument xml = new XmlDocument();
xml.LoadXml(HavaDurumu.GetWeather(comboBox1.Text,"Turkey"));
listBox1.Items.Add("Tarih-Zaman : " + xml.SelectSingleNode("CurrentWeather/Time").InnerText);
listBox1.Items.Add("Rüzgar : " + xml.SelectSingleNode("CurrentWeather/Wind").InnerText);
listBox1.Items.Add("Sıcaklık : " + xml.SelectSingleNode("CurrentWeather/Temperature").InnerText);
}
Son olarak unutmamanız gereken bir nokta var.Web Service kullanırken farkına varmışsınızdır ki, sizden bağımsız kişi veya kişiler tarafından yazılan program parcacıkları kullanıyorsunuz.Kullanırken o anki projenize o Web Service i tanıtıyorsunuz.Yani yarın bir gün o Web Service güncellenirse, sizin haberiniz olmayacaktır.O halde durmadan Web Service inizi Update etmeyi unutmayınız.Bunuda Service References dosyasının içindeki Web Service dosyamıza sağ tıklayarak, Update Service References demeniz yeterlidir.Web Service in yeni versiyonunu projenize set edip, sizlere gerekli yerlerde yapmanız gereken ayarlamalarda haberdar edecektir.
Bu yazımında sonuna gelmiş bulunmaktayız.
İyi çalışmalar..