DataFlex
DataFlex
Belgium eHealth Platform - AddressBook - Search for Professionals
See more Belgian eHealth Platform Examples
Demonstrates how to search for professionals using the AddressBook API.Chilkat DataFlex Downloads
Use ChilkatAx-win32.pkg
Procedure Test
Boolean iSuccess
Variant vCert
Handle hoCert
Handle hoBdSecToken
Integer iStartIdx
Integer iEndIdx
String sBase64_saml_token
Handle hoXml
Handle hoDt
Handle hoHttp
String sXmlStr
Variant vResp
Handle hoResp
String sTemp1
Integer iTemp1
Move False To iSuccess
// This example assumes 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.
// --------------------------------------------------------------------------------
// Provide a certificate + private key.
// Note: If your certificate + private key is located on a hardware token or smartcard, you can call a different function to load from smartcard..
Get Create (RefClass(cComChilkatCert)) To hoCert
If (Not(IsComObjectCreated(hoCert))) Begin
Send CreateComObject of hoCert
End
Get ComLoadPfxFile Of hoCert "SSIN=12345678.acc.p12" "p12_password" To iSuccess
If (iSuccess = False) Begin
Get ComLastErrorText Of hoCert To sTemp1
Showln sTemp1
Procedure_Return
End
// Let's get the SAML Security Token obtained from https://services-acpt.ehealth.fgov.be/IAM/SecurityTokenService/v1/RequestSecurityToken
// a very short time ago..
// See this example for how we got the SAML security token: eHealth Belgium Request Security Token
Get Create (RefClass(cComChilkatBinData)) To hoBdSecToken
If (Not(IsComObjectCreated(hoBdSecToken))) Begin
Send CreateComObject of hoBdSecToken
End
Get ComLoadFile Of hoBdSecToken "qa_data/tokens/ehealth-fgov-be-sectoken.xml" To iSuccess
If (iSuccess = False) Begin
Showln "Failed to load SAML security token"
Procedure_Return
End
// The SAML security token is just the part from <Assertion ..> ... </Assertion>
// So let's get just that part..
Get ComFindString Of hoBdSecToken "<Assertion" 0 "utf-8" To iStartIdx
If (iStartIdx < 0) Begin
Showln "Did not find the start of the SAML assertion."
Procedure_Return
End
Get ComFindString Of hoBdSecToken "</Assertion>" 0 "utf-8" To iEndIdx
If (iEndIdx < 0) Begin
Showln "Did not find the end of the SAML assertion."
Procedure_Return
End
// Adjust the index to the 1st byte after "</Assertion>"
Move (iEndIdx + 12) To iEndIdx
Get ComGetEncodedChunk Of hoBdSecToken iStartIdx (iEndIdx - iStartIdx) "base64" To sBase64_saml_token
Showln sBase64_saml_token
// Our SOAP request will look like this:
// The SOAP request to search for professionals looks like this:
// <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:add="urn:be:fgov:ehealth:addressbook:protocol:v1">
// <soapenv:Header>
// <wsse:Security xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">
// <wsse:BinarySecurityToken
// ValueType="http://docs.oasis-open.org/wss/oasis-wss-saml-token-profile-1.0#SAMLAssertionID"
// EncodingType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0#Base64Binary">BASE64_SAML_TOKEN</wsse:BinarySecurityToken>
// </wsse:Security>
// </soapenv:Header>
// <soapenv:Body>
// <add:SearchProfessionalsRequest Id="bdc38ae62-3e7f-4f80-80f7-c3e745500fa3" IssueInstant="2016-03-23T18:49:26.968+01:00" Offset="0" MaxElements="100">
// <add:SSIN>74062423769</add:SSIN>
// </add:SearchProfessionalsRequest>
// </soapenv:Body>
// </soapenv:Envelope>
Get Create (RefClass(cComChilkatXml)) To hoXml
If (Not(IsComObjectCreated(hoXml))) Begin
Send CreateComObject of hoXml
End
Set ComTag Of hoXml To "soapenv:Envelope"
Get ComUpdateAttrAt Of hoXml "soapenv:Header|wsse:Security" True "xmlns:wsse" "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" To iSuccess
Get ComUpdateAttrAt Of hoXml "soapenv:Header|wsse:Security|wsse:BinarySecurityToken" True "ValueType" "http://docs.oasis-open.org/wss/oasis-wss-saml-token-profile-1.0#SAMLAssertionID" To iSuccess
Get ComUpdateAttrAt Of hoXml "soapenv:Header|wsse:Security|wsse:BinarySecurityToken" True "EncodingType" "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0#Base64Binary" To iSuccess
Send ComUpdateChildContent To hoXml "soapenv:Header|wsse:Security|wsse:BinarySecurityToken" sBase64_saml_token
Get ComUpdateAttrAt Of hoXml "soapenv:Body|add:SearchProfessionalsRequest" True "Id" "bdc38ae62-3e7f-4f80-80f7-c3e745500fa3" To iSuccess
Get Create (RefClass(cComCkDateTime)) To hoDt
If (Not(IsComObjectCreated(hoDt))) Begin
Send CreateComObject of hoDt
End
Get ComSetFromCurrentSystemTime Of hoDt To iSuccess
Get ComGetAsTimestamp Of hoDt True To sTemp1
Get ComUpdateAttrAt Of hoXml "soapenv:Body|add:SearchProfessionalsRequest" True "IssueInstant" sTemp1 To iSuccess
Get ComUpdateAttrAt Of hoXml "soapenv:Body|add:SearchProfessionalsRequest" True "Offset" "0" To iSuccess
Get ComUpdateAttrAt Of hoXml "soapenv:Body|add:SearchProfessionalsRequest" True "MaxElements" "100" To iSuccess
Send ComUpdateChildContent To hoXml "soapenv:Body|add:SearchProfessionalsRequest|urn:SSIN" "74062423769"
Get ComGetXml Of hoXml To sTemp1
Showln sTemp1
Get Create (RefClass(cComChilkatHttp)) To hoHttp
If (Not(IsComObjectCreated(hoHttp))) Begin
Send CreateComObject of hoHttp
End
Get pvComObject of hoCert to vCert
Get ComSetSslClientCert Of hoHttp vCert To iSuccess
If (iSuccess = False) Begin
Get ComLastErrorText Of hoHttp To sTemp1
Showln sTemp1
Procedure_Return
End
Send ComSetRequestHeader To hoHttp "Content-Type" "text/xml"
Send ComSetRequestHeader To hoHttp "SOAPAction" "urn:be:fgov:ehealth:addressbook:protocol:v1:searchProfessionals"
Get ComGetXml Of hoXml To sXmlStr
Get Create (RefClass(cComChilkatHttpResponse)) To hoResp
If (Not(IsComObjectCreated(hoResp))) Begin
Send CreateComObject of hoResp
End
Get pvComObject of hoResp to vResp
Get ComHttpStr Of hoHttp "POST" "https://services.ehealth.fgov.be/AddressBook/v1" sXmlStr "utf-8" "application/xml" vResp To iSuccess
If (iSuccess = False) Begin
Get ComLastErrorText Of hoHttp To sTemp1
Showln sTemp1
Procedure_Return
End
Get ComBodyStr Of hoResp To sTemp1
Showln sTemp1
Get ComStatusCode Of hoResp To iTemp1
Showln "response status code = " iTemp1
End_Procedure