HyperLink
Bejelentkezés
E-mail: 
Jelszó: 





Skip Navigation Links
 

Amerikai városok időjárás-információinak elérése Windows-os kliensből


Példaprogram letöltése

9590 bájt

Az Internet végtelen tengerében szörfözve rábukkanhatunk olyan érdekes szolgáltatásokra, melyek nem pusztán információkat szolgáltatnak, hanem megteremtik annak lehetőségét, hogy a szolgáltatás motorjához valamilyen „híd” segítségével programozók is kapcsolódjanak, és megírják hozzá saját, testre szabott alkalmazásaikat. Ennek lehetőségét tartogatja egy, a Weben elérhető szervizalkalmazás, melynek szolgáltatásait, meghívható metódusait mutatjuk most be cikkünkben.

Az Interneten elérhető szolgáltatás
Kalandozva a világhálón könnyen rátalálhatunk a világ talán legnagyobb időjárással foglalkozó vállalatának honlapjára, a www.weather.com címen. A Weboldalon elérhető szolgáltatásuknak – ahol irányítószámok, vagy városok neveinek megadásával juthatunk értékes időjárási információkhoz -, egyelőre nincs programozói szemszögből is érdekes vetülete.
Azonban az időjárási adatok elérésére egy amerikai, a mobilkommunikációval foglalkozó vállalkozás elkészített egy Mobil Weather XML WebService névre keresztelt szolgáltatást, amely már .NET-es kliens-alkalmazásból is elérhető egy Web Reference megadása, vagy proxy osztály létrehozása után.
A szolgáltatás a http://ejse.com/WeatherService/Service.asmx címen érhető el, melyhez a példa-alkalmazásunkban elkészítünk egy proxyt.
A szerviz metódusai használhatók a fenti URL böngészőben történő megadásával is, azonban az eredmény XML-formátumú, mely nem annyira értelmezhető.
A szolgáltatás egyelőre csak amerikai városok időjárásadatait tartalmazza, de várhatóan lesz előrelépés a Föld többi kontinense felé is.


A szolgáltatás implementálása kliensünkben
A szerviz négy elérhető metódussal rendelkezik, a példánkban mi ebből egyet, a GetWeatherInfo nevűt használjuk fel. A metódus paraméterként egy irányítószámot vár, és visszaad egy WeatherInfo típusú objektumot, melynek nyilvános változóit lekérdezve kaphatjuk meg az időjárással kapcsolatos információkat.
Mivel a szolgáltatás angol nyelvterületre készült, így a szöveges tájékoztató angolul informálja a felhasználót. Azonban még így is segítség lehet egy éppen az adott területre utazó számára.
A metódusok eléréséhez szükségünk lesz egy proxy osztályra, melynek elkészítéséhez a Visual Studio.NET WSDL.EXE segédprogramját fogjuk felhasználni. A segédprogramnak paraméterként megadjuk a generálandó állomány nevét, valamint azt a címet, ahol a szerviz megtalálható:
wsdl /out: C:\Service.cs http:// ejse.com/WeatherService/Service.asmx
Az elkészült proxy-osztály rendelkezésre áll, már csak fel kel használni az alkalmazásunkból. Csatolnunk kell projektünkhöz. A proxy felhasználásához el kell érnünk a SOAP protokoll kezeléséhez szükséges névteret, így a forrás fejlécében adjuk meg a következő sort:
using System.Web.Services.Protocols;
Az irányítószámok 00501 és 99950 közötti számok, azonban előfordulhat, hogy valamelyik számhoz nem kapcsolódik létező város. Ezt az alkalmazásban jelezzük. Itt elkapjuk a generálódó SoapException kivételt.
A MŰVELET gombra kattintva indítható a lekérdezés, ahol előbb példányosítanunk kell a Service osztályt, majd meg kell hívnunk az említett GetWeatherInfo metódust a szövegmezőben megadott irányítószámmal:
Service s = new Service();
WeatherInfo wi = new WeatherInfo();
...
wi = s.GetWeatherInfo(zipCode);
A WeatherInfo osztály a következő információkat szolgáltatja:
  • Location: az irányítószám alapján megtalált város neve, és az állam rövidítése
  • Temperature: az aktuális hőmérséklet Fareinheit-ben, melyet programunkban átalakítunk Celsius mértékegységre (Celsius = (Fareinheit-32)*5/9)
  • Forecast: előrejelzés szövegesen, angolul
  • Visibility: látótávolság
  • Pressure: légnyomás
  • Dewpoint: harmatpont
  • UVIndex: UV-mutató
  • Humidity: páratartalom
  • Wind: szélerősség
  • ReportedAt: az információkat szolgáltató forrás
  • LastUpdated: utolsó frissítés időpontja
A változók könnyen kezelhető karakterlánc-típusúak, így egyszerűen betehetők a Form-on található ListBox kontrolba.
listBox1.Items.Add("Légnyomás: " + wi.Pressure);
...

Könyv
Ez a cikk megtalálható ebben a könyvben: C# Software Offline 2003 évkönyv 215. oldal

Felhasználási feltételek
A Software Online szoftverfejlesztői magazin mindegyik cikke, minden megjelent képe, és egyéb publikált anyaga szerzői jog védelme alatt áll! Bármilyen formában történő másodlagos terjesztésük, közzétételük vagy felhasználásuk kizárólag a kiadó előzetes írásbeli engedélyével történhet!

Copyright © 1999-2012 Animare Software Kft. Minden jog fenntartva!
| Készült: Animare Stúdió | Adatvédelem | Kapcsolat |