Autor: Martin Bradáč
Následující návod popisuje, jak pracovat s registrem ARES v Power Query metodou POST. Řekněme, že máme tabulku obsahující sloupec s IČ. Chceme prověřit, že údaje v tabulce odpovídají aktuálním záznamům Ministerstva financí. Pokud budeme ověřovat jednotky nebo desítky záznamů, pak můžeme použít velmi jednoduchý postup díky metodě GET, kde je parametr IČ předáván jako součást webové adresy.

Pokud ověřujeme větší množství záznamů, je vhodnější vzhledem k limitům služby, použít metodu POST. Díky ní můžete do jednoho požadavku vložit až 100 dotazů.
Konstrukce dotazu je ale už poněkud odlišná a bude vyžadovat přípravu v Power Query.
ARES přijímá požadavky ve formátu XML. Musíme proto nejprve připravit XML s požadovanou strukturou. Konkrétní podobu dotazu najdete zde:
https://wwwinfo.mfcr.cz/ares/xml_doc/schemas/ares/ares_request_orrg/v_1.0.0/vzor_dotazu_basic.xml
Obsahuje hlavičku, tělo s elementem Dotaz a uzavírací element.

Hlavičku můžeme uložit do ručně zadaných dat – nejpohodlnější způsob pro další manipulaci.

Dále je zapotřebí vytvořit vytvořit pro každou firmu – řádek následující řetězec:
<Dotaz>
<Pomocne_ID>1</Pomocne_ID>
<ICO>27074358</ICO>
</Dotaz>

Vytvořte Indexový sloupec – použije se pro hodnotu Pomocne_ID
2) Přidejte vlastní sloupec s následujícím zápisem:

“<Dotaz>
<Pomocne_ID>”&[Index]&”</Pomocne_ID>
<ICO>”&[IČ]&”</ICO>
</Dotaz>”

Nyní je zapotřebí spojit hlavičku, všechny připravené dotazy do jednoho řetězce a přidat zakončovací element. Pro názornost jsem vytvořil ze sloupce Dotaz nový seznam obsahující pouze řádky s XML.
Pomocí funkce Text.Combine jsem všechny „Dotazy“ spojil do jednoho dlouhého řetězce.
Nyní již stačí standardně pospojovat řetězce hlavičky, dotazu a zakončení.

Tako připravené XML použijeme při volání webové služby:

Source = Xml.Tables(Web.Contents(https://wwwinfo.mfcr.cz/cgi-bin/ares/xar.cgi ,[Content=Text.ToBinary(CompleteRequest) ,Headers=[Authorization=”Anonymous” ,#”Accept-Encoding”=”gzip,deflate”, #”Content-Type”=”text/xml;charset=UTF-8″]])),Table = Source{1}[Table]

Je nutné data předávat jako Binární a proto se použije funkce Text.ToBinary

Služba vrátí výsledek opět v XML, které je zapotřebí rozebrat na požadované sloupce. 

Napsat komentář

Vaše emailová adresa nebude publikována.

*

smazat formulářOdeslat komentář