![]() |
Chilkat HOME Android™ AutoIt C C# C++ Chilkat2-Python CkPython Classic ASP DataFlex Delphi DLL Go Java Node.js Objective-C PHP Extension Perl PowerBuilder PowerShell PureBasic Ruby SQL Server Swift Tcl Unicode C Unicode C++ VB.NET VBScript Visual Basic 6.0 Visual FoxPro Xojo Plugin
(Tcl) Belgium eHealth Platform - AddressBook - Search for ProfessionalsSee more Belgian eHealth Platform ExamplesDemonstrates how to search for professionals using the AddressBook API.For more information, see https://www.ehealth.fgov.be/ehealthplatform/nl/data/file/view/6c419e5685327eed7200d1c543c38a55d5387d30?name=AddressBook%20Consultation%20WS%20v.1%20-%20Cookbook%20v.1.11%20dd%2031082023.pdf
load ./chilkat.dll # 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. # -------------------------------------------------------------------------------- set success 1 # 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.. set cert [new_CkCert] set success [CkCert_LoadPfxFile $cert "SSIN=12345678.acc.p12" "p12_password"] if {$success != 1} then { puts [CkCert_lastErrorText $cert] delete_CkCert $cert exit } # 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 set bdSecToken [new_CkBinData] set success [CkBinData_LoadFile $bdSecToken "qa_data/tokens/ehealth-fgov-be-sectoken.xml"] if {$success == 0} then { puts "Failed to load SAML security token" delete_CkCert $cert delete_CkBinData $bdSecToken exit } # The SAML security token is just the part from <Assertion ..> ... </Assertion> # So let's get just that part.. set startIdx [CkBinData_FindString $bdSecToken "<Assertion" 0 "utf-8"] if {$startIdx < 0} then { puts "Did not find the start of the SAML assertion." delete_CkCert $cert delete_CkBinData $bdSecToken exit } set endIdx [CkBinData_FindString $bdSecToken "</Assertion>" 0 "utf-8"] if {$endIdx < 0} then { puts "Did not find the end of the SAML assertion." delete_CkCert $cert delete_CkBinData $bdSecToken exit } # Adjust the index to the 1st byte after "</Assertion>" set endIdx [expr $endIdx + 12] set base64_saml_token [CkBinData_getEncodedChunk $bdSecToken $startIdx [expr $endIdx - $startIdx] "base64"] puts "$base64_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> set xml [new_CkXml] CkXml_put_Tag $xml "soapenv:Envelope" CkXml_UpdateAttrAt $xml "soapenv:Header|wsse:Security" 1 "xmlns:wsse" "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" CkXml_UpdateAttrAt $xml "soapenv:Header|wsse:Security|wsse:BinarySecurityToken" 1 "ValueType" "http://docs.oasis-open.org/wss/oasis-wss-saml-token-profile-1.0#SAMLAssertionID" CkXml_UpdateAttrAt $xml "soapenv:Header|wsse:Security|wsse:BinarySecurityToken" 1 "EncodingType" "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0#Base64Binary" CkXml_UpdateChildContent $xml "soapenv:Header|wsse:Security|wsse:BinarySecurityToken" $base64_saml_token CkXml_UpdateAttrAt $xml "soapenv:Body|add:SearchProfessionalsRequest" 1 "Id" "bdc38ae62-3e7f-4f80-80f7-c3e745500fa3" set dt [new_CkDateTime] CkDateTime_SetFromCurrentSystemTime $dt CkXml_UpdateAttrAt $xml "soapenv:Body|add:SearchProfessionalsRequest" 1 "IssueInstant" [CkDateTime_getAsTimestamp $dt 1] CkXml_UpdateAttrAt $xml "soapenv:Body|add:SearchProfessionalsRequest" 1 "Offset" "0" CkXml_UpdateAttrAt $xml "soapenv:Body|add:SearchProfessionalsRequest" 1 "MaxElements" "100" CkXml_UpdateChildContent $xml "soapenv:Body|add:SearchProfessionalsRequest|urn:SSIN" "74062423769" puts [CkXml_getXml $xml] set http [new_CkHttp] set success [CkHttp_SetSslClientCert $http $cert] if {$success != 1} then { puts [CkHttp_lastErrorText $http] delete_CkCert $cert delete_CkBinData $bdSecToken delete_CkXml $xml delete_CkDateTime $dt delete_CkHttp $http exit } CkHttp_SetRequestHeader $http "Content-Type" "text/xml" CkHttp_SetRequestHeader $http "SOAPAction" "urn:be:fgov:ehealth:addressbook:protocol:v1:searchProfessionals" # resp is a CkHttpResponse set resp [CkHttp_PostXml $http "https://services.ehealth.fgov.be/AddressBook/v1" [CkXml_getXml $xml] "utf-8"] if {[CkHttp_get_LastMethodSuccess $http] == 0} then { puts [CkHttp_lastErrorText $http] delete_CkCert $cert delete_CkBinData $bdSecToken delete_CkXml $xml delete_CkDateTime $dt delete_CkHttp $http exit } puts [CkHttpResponse_bodyStr $resp] puts "response status code = [CkHttpResponse_get_StatusCode $resp]" delete_CkHttpResponse $resp delete_CkCert $cert delete_CkBinData $bdSecToken delete_CkXml $xml delete_CkDateTime $dt delete_CkHttp $http |
© 2000-2025 Chilkat Software, Inc. All Rights Reserved.