
A mellékelt példaprogram megnyitása előtt az IRSZWS.pas-ban lévő komponenst telepítenie kell a Delphi alá. Ehhez válassza a Component - Install Component menüpontot.
A komponens két függvénnyel rendelkezik. A SearchByCity metódus segítségével város és azon belül utca megadásával kereshetünk.
function SearchByCity(CityName, StreetName: String): TRecordSet2Array;
A CityName paraméterben kell megadnunk a település nevét, a StreetName-ben pedig az utca nevét. Bármelyik paraméterben megadhatunk üres sztringet, a szerver csak azt a paramétert veszi figyelembe, amely adatot tartalmaz. Amikor megadunk egy szöveget, akkor a keresés minden olyan találatot visszaad, amelynek elején a megadott szó szerepel. Például ha a településnévhez azt írjuk be, hogy ’békés’, akkor a találati listában Békés, Békéscsaba, Békéssámson, stb. is szerepelni fog.
Ha azt akarjuk, hogy a keresés csak azt adja vissza, amit megadtunk, akkor a keresett szót idézőjelekben adjuk meg.
A másik függvény segítségével irányítószám megadása alapján kereshetünk.
function SearchByPostCode(PCode: Integer): TRecordSet1Array;
Mindkét függvény egy dinamikus tömbbel tér vissza.
TRecordSet1Array típus
| Mezőnév |
Típus |
Megjegyzés |
| CityID |
Integer |
A település azonosító kódja |
| CountyName |
String[40] |
Megye neve |
| PostCode |
String[4] |
Irányítószám |
| CityName |
String[40] |
Település neve |
| CityNameExt |
String[20] |
Kiegészítő adat a településről |
TRecordSet2Array típus
| Mezőnév |
Típus |
Megjegyzés |
| CityID |
Integer |
A település azonosító kódja |
| CountyName |
String[40] |
Megye neve |
| PostCode |
String[4] |
Irányítószám |
| CityName |
String[40] |
Település neve |
| CityNameExt |
String[20] |
Kiegészítő adat a településről |
| StreetName |
String[60] |
Utca neve |
| StreetNameExt |
String[40] |
Kiegészítő adat az utcáról |
| Area |
String[10] |
Kerület |
| NumFrom |
Integer |
Részekre osztott utcák esetén a kezdő házszám |
| NumTo |
Integer |
Részekre osztott utcák esetén az utolsó házszám |
| NumFromChar |
String[2] |
Részekre osztott utcák esetén az első betű pl.: d |
| NumToChar |
String[2] |
Részekre osztott utcák esetén az utolsó betű pl.: e |
A komponens elkészítése
A szolgáltatás az alábbi címen érhető el.
http://www.animare.hu/AnimareWebService/IRSZ.asmx
A web service szolgáltatás Visual Studio .Net-ben lett fejlesztve. A szolgáltatás függvényei olyan adattípust használnak visszatérési értékként, amelyet a Delphi nem tud feldolgozni.
A szolgáltatást nem a hagyományos módon érjük el, hanem URL címzésen keresztül.
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 web service SearchByCity függvényének hívása a bonyolultabb, mert az két paramétert vár. Az egyik a city, a másik a street. A két paramétert az & jel választja el egymástól.
LoadFromUrl('http://www.animare.hu/AnimareWebService/IRSZ.asmx/SearchByCity?city='+
StringToHTML(CityName)+'&street='+StringToHTML(StreetName));
A létrejövő Temp.xml állományt egy TStringList segítségével könnyedén megnyithatjuk, így minden sora külön elemet képez a TStringList-ben. Az XML állományban egy adatsorozat bejegyzése külön sorokban található, folyamatosan, egymás alatt elhelyezkedve. A legelső elem, amit meg kell keresnünk a <CityID> bejegyzés. A bejegyzések az alábbi formában szerepelnek:
Nekünk csak az adattagot kell feljegyeznünk.
A SearchByCity függvény két fajta adattípussal tér vissza. Ha a keresésnél nem nagyváros nevét adjuk meg, akkor csak a rövidebb adatszerkezetet kapjuk vissza. Ha olyan települést adunk meg, ahol utcanevek is nyilván vannak tartva, akkor a függvény eredményül a hosszabb adatszerkezetet adja.