DataFlex
DataFlex
Royal Mail OBA Web Service -- Get Accounts
See more Royal Mail OBA Examples
Royal Mail OBA Web Service -- Get Accounts.Chilkat DataFlex Downloads
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