Sample code for 30+ languages & platforms
PowerBuilder

Magyar Nemzeti Bank (MNB) Get Currencies

See more REST Misc Examples

The Magyar Nemzeti Bank (MNB) is the central bank of Hungary. In this role, its primary objective is to achieve and maintain price stability. The MNB website is available to visitors in both Hungarian and English. The MNB provides the Arfolyam (trans. Exchange Rate) API, which can be used to retrieve current and historic currency exchange rates. This service uses SOAP calls issued in XML format.

This example gets a list of currencies.

Chilkat PowerBuilder Downloads

PowerBuilder
integer li_rc
integer li_Success
oleobject loo_Rest
integer li_BTls
integer li_Port
integer li_BAutoReconnect
oleobject loo_Xml
oleobject loo_SbRequestBody
oleobject loo_SbResponseBody
integer li_RespStatusCode
oleobject loo_XmlResponse
string ls_ResultEncoded
oleobject loo_SbResult
oleobject loo_XmlResult

li_Success = 0

loo_Rest = create oleobject
li_rc = loo_Rest.ConnectToNewObject("Chilkat.Rest")
if li_rc < 0 then
    destroy loo_Rest
    MessageBox("Error","Connecting to COM object failed")
    return
end if

// URL: http://www.mnb.hu/arfolyamok.asmx
li_BTls = 0
li_Port = 80
li_BAutoReconnect = 1
li_Success = loo_Rest.Connect("www.mnb.hu",li_Port,li_BTls,li_BAutoReconnect)
if li_Success <> 1 then
    Write-Debug "ConnectFailReason: " + string(loo_Rest.ConnectFailReason)
    Write-Debug loo_Rest.LastErrorText
    destroy loo_Rest
    return
end if

// --------------------------------------------------------------------------------
// Also see Chilkat's Online WSDL Code Generator
// to generate code and SOAP Request and Response XML for each operation in a WSDL.
// --------------------------------------------------------------------------------

loo_Xml = create oleobject
li_rc = loo_Xml.ConnectToNewObject("Chilkat.Xml")

loo_Xml.Tag = "soapenv:Envelope"
loo_Xml.AddAttribute("xmlns:soapenv","http://schemas.xmlsoap.org/soap/envelope/")
loo_Xml.AddAttribute("xmlns:web","http://www.mnb.hu/webservices/")
loo_Xml.UpdateChildContent("soapenv:Header","")
loo_Xml.UpdateChildContent("soapenv:Body|web:GetCurrencies","")

loo_Rest.AddHeader("Content-Type","text/xml")
loo_Rest.AddHeader("SOAPAction","/webservices/MNBArfolyamServiceSoap/GetCurrencies")
loo_Rest.AddHeader("Accept","application/xml")

loo_SbRequestBody = create oleobject
li_rc = loo_SbRequestBody.ConnectToNewObject("Chilkat.StringBuilder")

loo_Xml.GetXmlSb(loo_SbRequestBody)
loo_SbResponseBody = create oleobject
li_rc = loo_SbResponseBody.ConnectToNewObject("Chilkat.StringBuilder")

li_Success = loo_Rest.FullRequestSb("POST","/arfolyamok.asmx",loo_SbRequestBody,loo_SbResponseBody)
if li_Success <> 1 then
    Write-Debug loo_Rest.LastErrorText
    destroy loo_Rest
    destroy loo_Xml
    destroy loo_SbRequestBody
    destroy loo_SbResponseBody
    return
end if

li_RespStatusCode = loo_Rest.ResponseStatusCode
if li_RespStatusCode >= 400 then
    Write-Debug "Response Status Code = " + string(li_RespStatusCode)
    Write-Debug "Response Header:"
    Write-Debug loo_Rest.ResponseHeader
    Write-Debug "Response Body:"
    Write-Debug loo_SbResponseBody.GetAsString()
    destroy loo_Rest
    destroy loo_Xml
    destroy loo_SbRequestBody
    destroy loo_SbResponseBody
    return
end if

Write-Debug "response status code = " + string(li_RespStatusCode)

loo_XmlResponse = create oleobject
li_rc = loo_XmlResponse.ConnectToNewObject("Chilkat.Xml")

loo_XmlResponse.LoadSb(loo_SbResponseBody,1)
Write-Debug loo_XmlResponse.GetXml()

// The XML response contains this:
// <?xml version="1.0" encoding="utf-8" ?>
// <s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
//     <s:Body>
//         <GetCurrenciesResponse xmlns="http://www.mnb.hu/webservices/" xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
//             <GetCurrenciesResult>&lt;MNBCurrencies&gt;&lt;Currencies&gt;&lt;Curr&gt;HUF&lt;/Curr&gt;&lt;Curr&gt;EUR&lt;/Curr&gt;&lt;Curr&gt;AUD&lt;/Curr&gt; ... &lt;/MNBCurrencies&gt;</GetCurrenciesResult>
//         </GetCurrenciesResponse>
//     </s:Body>
// </s:Envelope>

// Get the GetCurrenciesResult
ls_ResultEncoded = loo_XmlResponse.GetChildContent("s:Body|GetCurrenciesResponse|GetCurrenciesResult")
Write-Debug ls_ResultEncoded

// Entity decode the result to get XML.
loo_SbResult = create oleobject
li_rc = loo_SbResult.ConnectToNewObject("Chilkat.StringBuilder")

loo_SbResult.Append(ls_ResultEncoded)
loo_SbResult.EntityDecode()

// Load it into XML.
loo_XmlResult = create oleobject
li_rc = loo_XmlResult.ConnectToNewObject("Chilkat.Xml")

loo_XmlResult.LoadSb(loo_SbResult,1)
Write-Debug loo_XmlResult.GetXml()

// The result is this:

// <?xml version="1.0" encoding="utf-8" ?>
// <MNBCurrencies>
//     <Currencies>
//         <Curr>HUF</Curr>
//         <Curr>EUR</Curr>
//         <Curr>AUD</Curr>
//         <Curr>BGN</Curr>
//         <Curr>BRL</Curr>
//         <Curr>CAD</Curr>
//         <Curr>CHF</Curr>
//         <Curr>CNY</Curr>
//         <Curr>CZK</Curr>
//         <Curr>DKK</Curr>
//         <Curr>GBP</Curr>
//         <Curr>HKD</Curr>
//         <Curr>HRK</Curr>
//         <Curr>IDR</Curr>
//         <Curr>ILS</Curr>
//         <Curr>INR</Curr>
//         <Curr>ISK</Curr>
//         <Curr>JPY</Curr>
//         <Curr>KRW</Curr>
//         <Curr>MXN</Curr>
//         <Curr>MYR</Curr>
//         <Curr>NOK</Curr>
//         <Curr>NZD</Curr>
//         <Curr>PHP</Curr>
//         <Curr>PLN</Curr>
//         <Curr>RON</Curr>
//         <Curr>RSD</Curr>
//         <Curr>RUB</Curr>
//         <Curr>SEK</Curr>
//         <Curr>SGD</Curr>
//         <Curr>THB</Curr>
//         <Curr>TRY</Curr>
//         <Curr>UAH</Curr>
//         <Curr>USD</Curr>
//         <Curr>ZAR</Curr>
//         <Curr>ATS</Curr>
//         <Curr>AUP</Curr>
//         <Curr>BEF</Curr>
//         <Curr>BGL</Curr>
//         <Curr>CYN</Curr>
//         <Curr>CSD</Curr>
//         <Curr>CSK</Curr>
//         <Curr>DDM</Curr>
//         <Curr>DEM</Curr>
//         <Curr>EEK</Curr>
//         <Curr>EGP</Curr>
//         <Curr>ESP</Curr>
//         <Curr>FIM</Curr>
//         <Curr>FRF</Curr>
//         <Curr>GHP</Curr>
//         <Curr>GRD</Curr>
//         <Curr>IEP</Curr>
//         <Curr>ITL</Curr>
//         <Curr>KPW</Curr>
//         <Curr>KWD</Curr>
//         <Curr>LBP</Curr>
//         <Curr>LTL</Curr>
//         <Curr>LUF</Curr>
//         <Curr>LVL</Curr>
//         <Curr>MNT</Curr>
//         <Curr>NLG</Curr>
//         <Curr>OAL</Curr>
//         <Curr>OBL</Curr>
//         <Curr>OFR</Curr>
//         <Curr>ORB</Curr>
//         <Curr>PKR</Curr>
//         <Curr>PTE</Curr>
//         <Curr>ROL</Curr>
//         <Curr>SDP</Curr>
//         <Curr>SIT</Curr>
//         <Curr>SKK</Curr>
//         <Curr>SUR</Curr>
//         <Curr>VND</Curr>
//         <Curr>XEU</Curr>
//         <Curr>XTR</Curr>
//         <Curr>YUD</Curr>
//     </Currencies>
// </MNBCurrencies>
// 


destroy loo_Rest
destroy loo_Xml
destroy loo_SbRequestBody
destroy loo_SbResponseBody
destroy loo_XmlResponse
destroy loo_SbResult
destroy loo_XmlResult