Delphi - Névnap webservice

forráskód letöltése
A www.animare.hu oldalon található egy webservice szolgáltatás, amely segítségével megtudhatjuk, hogy melyik napon éppen milyen névnap van. Lekérdezhetjük, hogy az adott napon éppen kik ünneplik névnapjukat. Lehetőségünk van arra is, hogy névnapokat keressünk egy megadott dátum alapján, vagy éppen fordítva. A szolgáltatás használatához készítünk egy komponenst.
A mellékelt példaprogram megnyitása előtt a NameDayWS.pas-ban lévő komponenst telepítenie kell a Delphi alá. Ehhez válassza a Component - Install Component menüpontot.
A komponens GetTodayNameday függvényével az aktuális névnapokat kérdezhetjük le.
function GetTodayNameday: TStringList;
A GetDatesByName függvénnyel a megadott névhez tartozó dátumokat tudhatjuk meg.
function GetDatesByName(IName: String): TStringList;
A harmadik függvény a GetNamesByDate. A függvénynek egy dátumot kell megadnunk. Visszatérési értékként az adott napon lévő névnapokat kapjuk meg.
function GetNamesByDate(Date: TDateTime): TStringList;
A névnap web service szolgáltatás az alábbi címen érhető el.
http://www.animare.hu/AnimareWebService/NameDay.asmx
A Web Service eléréséhez hozzunk létre egy új komponenst, majd válasszuk a File – New - Other menüpontot. A megjelenő ablakban válasszuk ki a WebServices fület, majd a WSDL Importer elemet.
Ismét létrejön egy ablak, ahol a szolgáltatás címét kell megadnunk. Ezt az alábbi módon kell megtennünk.
http://www.animare.hu/AnimareWebService/NameDay.asmx?wsdl
Miután létrejött a referencia, a NameDay unit tartalmazza a szolgáltatás eléréséhez szükséges függvényeket.
A web service három függvényt biztosít számunkra.
GetTodayNameDay
function GetTodayNameDay: ArrayOfString;
Az adott napon aktuális névnapok listáját adja meg.
Visszatérési érték
Az adott napon aktuális névnapok.
GetNamesByDate
function GetNamesByDate(
const dateValue: TXSDateTime
): ArrayOfString;
A függvény segítségével megtudhatjuk, hogy a megadott napon kik ünneplik névnapjukat.
Paraméterek
const dateValue: TXSDateTime
A dátum, amelyről információt szeretnénk megtudni.
Visszatérési érték
Az adott napon lévő névnapok.
GetDatesByName
function GetDatesByName(
const name: WideString
): ArrayOfDateTime;
A GetDatesByName függvény segítségével lekérdezhetjük azokat a dátumokat, amikor egy megadott név névnapnak számít.
Paraméterek
const name: WideString
A keresendő név.
Visszatérési érték
A névhez tartozó dátumok listája.
A web service szolgáltatás Visual Studio .Net-ben készült. A Delphi és a Visual Studio .Net az ékezetes karakterek és a dátum formátumok kezelésében nem teljesen kompatibilis egymással.
A három függvény közül csak a GetTodayNameDay függvényt hívhatjuk meg hagyományos módon. A másik két függvény használatához URL címzéssel kell elérnünk a szolgáltatást.
Egy URL címben nem szerepelhetnek ékezetes karakterek. Létrehoztuk a StringToHTML függvényt, amely a megadott szövegben kicseréli az ékezetes karaktereket, majd eredményül visszaadja a módosított karaktersorozatot.
Egy URL cím letöltéséhez elkészítettük a LoadFromURL függvényt.
procedure LoadFromURL(URL: string);
A függvény a paraméterként megadott oldalt elmenti ’c:\temp.xml’ néven. A függvény megfelelő paraméterrel történő hívása esetén az elmentett állomány tartalmazza a web service szolgáltatás eredménylistáját, XML formátumban, amelyet hagyományos, szöveges állományként feldolgozhatunk.
A GetNamesByDate függvényben az eredményül kapott nevek külön sorokban, az alábbi formában találhatóak meg.
<string>Név</string>
Nekünk csak meg kell találnunk a szövegben ezeket a részeket.
A GetDatesByName függvény hívásakor dátumot kapunk, amely a következő formában áll rendelkezésünkre a temp.xml állományban.
<dateTime>Dátum</dateTime>