WebElektronika

MNB árfolyamainak lekérdezése webszolgáltatás segítségével

person access_time 2014.07.11.
Megismerkedünk egy érdekes webszolgáltatással, középárfolyamokat fogunk lekérni a Magyar Nemzeti Bank által biztosított szolgáltatás segítségével. Elkészítünk ehhez egy C# nyelven írt klienst.


Készítsünk el egy olyan alkalmazást, amelynek segítségével a Magyar Nemzeti Bank webszolgáltatásának segítségével lekérjük a napi középárfolyamot. De miért kell ide webszolgáltatás? Ha megnézzük az MNB honlapját, akkor láthatjuk az EUR árfolyamát, de ha ezt szerenténk felhasználni egy saját alkalmazásunkban, akkor a honlapról kellene "leszednünk", például egy Regex kifejezéssel.

Sokkal kényelmesebb, ha igénybe vesszük az MNB által biztosított webszolgáltatást, amelyet itt találunk meg: http://www.mnb.hu/arfolyamok.asmx

Látható, hogy ezen a webszolgáltatáson hat metódus van, mi a GetCurrentExchangeRates() metódust fogjuk távolról meghívni, ez adja vissza string-ként (de XML formátumban) ugyanis a különböző valuták HUF-ban megadott értékeit.

Indítsuk el a VS2012-t, és hozzunk létre egy új konzolalkalmazást (ConsoleMNBArfolyamok1). Vegyük fel ServiceReference-ként (ServiceReference1) az MNB webszolgáltatásának URL-jét.
Ezután ebben a referenciában található osztályt (MNBArfolyamServiceSoapClient) példányosítsuk (1. ábra). Az előbb említett metódus visszatérési értékét a "current" változónak adjuk át, amelyet azután megjelenítünk a konzolon.


1. ábra   Első verzió
 

Indítsuk el a programunkat debug módban (F5), és a következő futási eredmény fogad minket (2. ábra).


2. ábra   Futási eredmény
 

Noha sikeres volt a lekérés, az eredmények nehezen olvashatók. Ábrázoljuk most a lekért eredményeket XML formátumban. Módosítsuk az első ábrán lévő programot a következők szerint (3. ábra).
Hívjuk segítségül az XDocument osztályt. Létrehozunk egy változót (xdoc), és a lekért string-ből egy XML-t hozunk létre (Parse).


3. ábra   String-ből készítünk XML-t
 

Ismét megjelenítjük a konzolon az eredményünket, de nem a "current"-et, hanem az "xdoc"-ot (4. ábra) jelenítjük meg a konzolon és azután várunk egy Enter leütésre.


4. ábra   XML-ben megjelenített árfolyamok
 

Jogos lehet az az igény, hogy az XML struktúra ne látszódjon, hanem csak a devizák nevei és a konkrét, aktuális értékei. Ezért újra módosítsuk a programunkat. Használjunk foreach ciklust, amelynek segítségével végig tudunk menni az XML eredményen (5. ábra). A ciklus belsejében az attribútumok (curr, unit) értékeit jelenítjük meg.


5. ábra   Csak az attribútumok értékeit jelenítjük meg
 

Indítsuk el újra ezt a módosított programot. A futási eredmény a 6. ábrán látható.


6. ábra   Futási eredmény, csak a valuták nevei és a HUF-hoz viszonyított értékei láthatók