DataFlex
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
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