Sample code for 30+ languages & platforms
DataFlex

Royal Mail OBA Web Service -- Get Accounts

See more Royal Mail OBA Examples

Royal Mail OBA Web Service -- Get Accounts.

Chilkat DataFlex Downloads

DataFlex
Use ChilkatAx-win32.pkg

Procedure Test
    Boolean iSuccess
    Handle hoXml
    Handle hoHttp
    String sEndpointUrl
    Variant vResp
    Handle hoResp
    String sAccountName
    String sAccountNumber
    Integer i
    Integer iNumAccounts
    String sTemp1
    Integer iTemp1

    Move False To iSuccess

    // This example requires the Chilkat API to have been previously unlocked.
    // See Global Unlock Sample for sample code.

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

    // Create the following XML:

    // <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:epro="urn:schemas-royalmail-com/webservice/epro">
    //    <soapenv:Header>
    //       <epro:Authentication>
    //          <epro:Username>my_username</epro:Username>
    //          <epro:Password>my_password</epro:Password>
    //          <epro:AccessCode>my_accessCode</epro:AccessCode>
    //          <epro:Version>1.0</epro:Version>
    //          <epro:SecurityToken>mysecuritytoken</epro:SecurityToken>
    //       </epro:Authentication>
    //    </soapenv:Header>
    //    <soapenv:Body>
    //       <epro:GetAccounts/>
    //    </soapenv:Body>
    // </soapenv:Envelope>

    Get Create (RefClass(cComChilkatXml)) To hoXml
    If (Not(IsComObjectCreated(hoXml))) Begin
        Send CreateComObject of hoXml
    End
    Set ComEmitXmlDecl Of hoXml To False
    Set ComTag Of hoXml To "soapenv:Envelope"
    Get ComAddAttribute Of hoXml "xmlns:soapenv" "http://schemas.xmlsoap.org/soap/envelope/" To iSuccess
    Get ComAddAttribute Of hoXml "xmlns:epro" "urn:schemas-royalmail-com/webservice/epro" To iSuccess

    // Replace my_username, my_password, and my_accessCode with your actual values.  Do not replace "mysecuritytoken".
    Send ComUpdateChildContent To hoXml "soapenv:Header|epro:Authentication|epro:Username" "my_username"
    Send ComUpdateChildContent To hoXml "soapenv:Header|epro:Authentication|epro:Password" "my_password"
    Send ComUpdateChildContent To hoXml "soapenv:Header|epro:Authentication|epro:AccessCode" "my_accessCode"
    Send ComUpdateChildContent To hoXml "soapenv:Header|epro:Authentication|epro:Version" "1.0"

    // Literally use the string "mysecuritytoken" here.
    Send ComUpdateChildContent To hoXml "soapenv:Header|epro:Authentication|epro:SecurityToken" "mysecuritytoken"
    Send ComUpdateChildContent To hoXml "soapenv:Body|epro:GetAccounts" ""

    Get Create (RefClass(cComChilkatHttp)) To hoHttp
    If (Not(IsComObjectCreated(hoHttp))) Begin
        Send CreateComObject of hoHttp
    End

    Send ComSetRequestHeader To hoHttp "SOAPAction" "urn:schemas-royalmail-com/webservice/epro/GetAccounts"

    // Use the sandbox endpoint:   http://interfaces.oba-v.royalmail.com/legacyws/EProImport.asmx 
    // The live endpoint would be: http://www.epro.royalmail.com/WebServices/import/eproimport.asmx
    Move "http://interfaces.oba-v.royalmail.com/legacyws/EProImport.asmx" To sEndpointUrl

    Get Create (RefClass(cComChilkatHttpResponse)) To hoResp
    If (Not(IsComObjectCreated(hoResp))) Begin
        Send CreateComObject of hoResp
    End
    Get ComGetXml Of hoXml To sTemp1
    Get pvComObject of hoResp to vResp
    Get ComHttpStr Of hoHttp "POST" sEndpointUrl sTemp1 "utf-8" "text/xml" vResp To iSuccess
    If (iSuccess = False) Begin
        Get ComLastErrorText Of hoHttp To sTemp1
        Showln sTemp1
        Procedure_Return
    End

    Get ComStatusCode Of hoResp To iTemp1
    Showln "response status code = " iTemp1
    Get ComBodyStr Of hoResp To sTemp1
    Showln sTemp1

    // The response looks like this:

    // <?xml version="1.0" encoding="utf-8"?>
    // <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    //     <SOAP-ENV:Header/>
    //     <SOAP-ENV:Body>
    //         <ns1:GetAccountsResponse xmlns:ns1="urn:schemas-royalmail-com/webservice/epro">
    //             <ns1:GetAccountsResult>
    //                 <ns1:Accounts>
    //                     <ns1:Account AccountName="DEMO CUSTOMER_Atos" AccountNumber="099986000"/>
    //                     <ns1:Account AccountName="CREDIT MANAGEMENT CENTRE" AccountNumber="999386001"/>
    //                 </ns1:Accounts>
    //             </ns1:GetAccountsResult>
    //         </ns1:GetAccountsResponse>
    //     </SOAP-ENV:Body>
    // </SOAP-ENV:Envelope>
    // 

    Get ComBodyStr Of hoResp To sTemp1
    Get ComLoadXml Of hoXml sTemp1 To iSuccess

    Move 0 To i
    Get ComNumChildrenHavingTag Of hoXml "SOAP-ENV:Body|ns1:GetAccountsResponse|ns1:GetAccountsResult|ns1:Accounts|ns1:Account" To iNumAccounts
    While (i < iNumAccounts)
        Set ComI Of hoXml To i
        Get ComChilkatPath Of hoXml "SOAP-ENV:Body|ns1:GetAccountsResponse|ns1:GetAccountsResult|ns1:Accounts|ns1:Account[i]|(AccountName)" To sAccountName
        Get ComChilkatPath Of hoXml "SOAP-ENV:Body|ns1:GetAccountsResponse|ns1:GetAccountsResult|ns1:Accounts|ns1:Account[i]|(AccountNumber)" To sAccountNumber
        Showln sAccountName ": " sAccountNumber
        Move (i + 1) To i
    Loop



End_Procedure