Sample code for 30+ languages & platforms
Visual FoxPro

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 Visual FoxPro Downloads

Visual FoxPro
LOCAL lnSuccess
LOCAL loXml
LOCAL loHttp
LOCAL lcEndpointUrl
LOCAL loResp
LOCAL lcServiceName
LOCAL lcServiceReg
LOCAL lcServiceLevel
LOCAL lcContract
LOCAL i
LOCAL lnNumContracts

lnSuccess = 0

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

loXml = CreateObject('Chilkat.Xml')
loXml.EmitXmlDecl = 0
loXml.Tag = "soapenv:Envelope"
loXml.AddAttribute("xmlns:soapenv","http://schemas.xmlsoap.org/soap/envelope/")
loXml.AddAttribute("xmlns:epro","urn:schemas-royalmail-com/webservice/epro")

* Replace my_username, my_password, and my_accessCode with your actual values.  Do not replace "mysecuritytoken".
loXml.UpdateChildContent("soapenv:Header|epro:Authentication|epro:Username","my_username")
loXml.UpdateChildContent("soapenv:Header|epro:Authentication|epro:Password","my_password")
loXml.UpdateChildContent("soapenv:Header|epro:Authentication|epro:AccessCode","my_accessCode")
loXml.UpdateChildContent("soapenv:Header|epro:Authentication|epro:Version","1.0")

* Literally use the string "mysecuritytoken" here.
loXml.UpdateChildContent("soapenv:Header|epro:Authentication|epro:SecurityToken","mysecuritytoken")
loXml.UpdateChildContent("soapenv:Body|epro:GetContracts|epro:Account","account_number")

loHttp = CreateObject('Chilkat.Http')

loHttp.SetRequestHeader("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
lcEndpointUrl = "http://interfaces.oba-v.royalmail.com/legacyws/EProImport.asmx"

loResp = CreateObject('Chilkat.HttpResponse')
lnSuccess = loHttp.HttpStr("POST",lcEndpointUrl,loXml.GetXml(),"utf-8","text/xml",loResp)
IF (lnSuccess = 0) THEN
    ? loHttp.LastErrorText
    RELEASE loXml
    RELEASE loHttp
    RELEASE loResp
    CANCEL
ENDIF

? "response status code = " + STR(loResp.StatusCode)
? loResp.BodyStr

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

* 

loXml.LoadXml(loResp.BodyStr)

i = 0
lnNumContracts = loXml.NumChildrenHavingTag("SOAP-ENV:Body|ns1:GetContractsResponse|ns1:GetContractsResult|ns1:Contracts|ns1:ContractDetails")
DO WHILE i < lnNumContracts
    loXml.I = i
    lcServiceName = loXml.ChilkatPath("SOAP-ENV:Body|ns1:GetContractsResponse|ns1:GetContractsResult|ns1:Contracts|ns1:ContractDetails[i]|(ServiceName)")
    lcServiceReg = loXml.ChilkatPath("SOAP-ENV:Body|ns1:GetContractsResponse|ns1:GetContractsResult|ns1:Contracts|ns1:ContractDetails[i]|(ServiceReg)")
    lcServiceLevel = loXml.ChilkatPath("SOAP-ENV:Body|ns1:GetContractsResponse|ns1:GetContractsResult|ns1:Contracts|ns1:ContractDetails[i]|(ServiceLevel)")
    lcContract = loXml.ChilkatPath("SOAP-ENV:Body|ns1:GetContractsResponse|ns1:GetContractsResult|ns1:Contracts|ns1:ContractDetails[i]|(Contract)")
    ? lcServiceName
    i = i + 1
ENDDO

RELEASE loXml
RELEASE loHttp
RELEASE loResp