Sample code for 30+ languages & platforms
DataFlex

Royal Mail OBA Web Service -- Get Contracts

See more Royal Mail OBA Examples

Royal Mail OBA Web Service -- Get the contracts for an account.

Chilkat DataFlex Downloads

DataFlex
Use ChilkatAx-win32.pkg

Procedure Test
    Boolean iSuccess
    Handle hoXml
    Handle hoHttp
    String sEndpointUrl
    Variant vResp
    Handle hoResp
    String sServiceName
    String sServiceReg
    String sServiceLevel
    String sContract
    Integer i
    Integer iNumContracts
    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.

    // 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:GetContracts>
    //         <epro:Account>account_number</epro:Account>
    //       </epro:GetContracts>
    //    </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:GetContracts|epro:Account" "account_number"

    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/GetContracts"

    // 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:GetContractsResponse xmlns:ns1="urn:schemas-royalmail-com/webservice/epro">
    //             <ns1:GetContractsResult Version="1">
    //                 <ns1:Contracts>
    //                     <ns1:ContractDetails ServiceName="ADV MAIL + RESPONSE UNSORTED 2C" ServiceReg="AC2" ServiceLevel="01" Contract="DEMOTEST1"/>
    //                     <ns1:ContractDetails ServiceName="PLANNED ENVELOPE POLL CARD MMK-2C      " ServiceReg="AG0" ServiceLevel="01" Contract=""/>
    // 			...
    //                 </ns1:Contracts>
    //             </ns1:GetContractsResult>
    //         </ns1:GetContractsResponse>
    //     </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:GetContractsResponse|ns1:GetContractsResult|ns1:Contracts|ns1:ContractDetails" To iNumContracts
    While (i < iNumContracts)
        Set ComI Of hoXml To i
        Get ComChilkatPath Of hoXml "SOAP-ENV:Body|ns1:GetContractsResponse|ns1:GetContractsResult|ns1:Contracts|ns1:ContractDetails[i]|(ServiceName)" To sServiceName
        Get ComChilkatPath Of hoXml "SOAP-ENV:Body|ns1:GetContractsResponse|ns1:GetContractsResult|ns1:Contracts|ns1:ContractDetails[i]|(ServiceReg)" To sServiceReg
        Get ComChilkatPath Of hoXml "SOAP-ENV:Body|ns1:GetContractsResponse|ns1:GetContractsResult|ns1:Contracts|ns1:ContractDetails[i]|(ServiceLevel)" To sServiceLevel
        Get ComChilkatPath Of hoXml "SOAP-ENV:Body|ns1:GetContractsResponse|ns1:GetContractsResult|ns1:Contracts|ns1:ContractDetails[i]|(Contract)" To sContract
        Showln sServiceName
        Move (i + 1) To i
    Loop



End_Procedure