Sample code for 30+ languages & platforms
Visual FoxPro

SOAP Request to fseservicetest.sanita.finanze.it with Smart Card Authentication (TS-CNS Italian Card)

See more HTTP Misc Examples

Demonstrates sending a SOAP request to fseservicetest.sanita.finanze.it with Smart Card (TS-CNS Italian Card).

Chilkat Visual FoxPro Downloads

Visual FoxPro
LOCAL lnSuccess
LOCAL loHttp
LOCAL loXml
LOCAL lcSoapEnvelope
LOCAL lcDomain
LOCAL lcPath
LOCAL loReq
LOCAL loCert
LOCAL loResp
LOCAL loXmlResp

lnSuccess = 0

*  This example requires the Chilkat API to have been previously unlocked.
*  See Global Unlock Sample for sample code.

loHttp = CreateObject('Chilkat.Http')
loXml = CreateObject('Chilkat.Xml')

lnSuccess = 0

*  --------------------------------------------------------------------------------
*  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 SOAP envelope...
loXml.Tag = "soapenv:Envelope"
loXml.AddAttribute("xmlns:soapenv","http://schemas.xmlsoap.org/soap/envelope/")
loXml.AddAttribute("xmlns:stat","http://statoconsensirichiesta.xsd.fse.ini.finanze.it")
loXml.AddAttribute("xmlns:tip","http://tipodatistatoconsensi.xsd.fse.ini.finanze.it")
loXml.UpdateChildContent("soapenv:Header","")
loXml.UpdateChildContent("soapenv:Body|stat:StatoConsensiRichiesta|stat:IdentificativoUtente","XXXXXXAAABBBCCC")
loXml.UpdateChildContent("soapenv:Body|stat:StatoConsensiRichiesta|stat:pinCode","...")
loXml.UpdateChildContent("soapenv:Body|stat:StatoConsensiRichiesta|stat:IdentificativoOrganizzazione","999")
loXml.UpdateChildContent("soapenv:Body|stat:StatoConsensiRichiesta|stat:StrutturaUtente","123456789")
loXml.UpdateChildContent("soapenv:Body|stat:StatoConsensiRichiesta|stat:RuoloUtente","ZZZ")
loXml.UpdateChildContent("soapenv:Body|stat:StatoConsensiRichiesta|stat:ContestoOperativo","")
loXml.UpdateChildContent("soapenv:Body|stat:StatoConsensiRichiesta|stat:IdentificativoAssistitoGenitoreTutore","")
loXml.UpdateChildContent("soapenv:Body|stat:StatoConsensiRichiesta|stat:PresaInCarico","true")
loXml.UpdateChildContent("soapenv:Body|stat:StatoConsensiRichiesta|stat:TipoAttivita","READ")
loXml.UpdateChildContent("soapenv:Body|stat:StatoConsensiRichiesta|stat:IdentificativoAssistitoConsenso","ABCDEFGHIJKLM")
lcSoapEnvelope = loXml.GetXml()

lcDomain = "fseservicetest.sanita.finanze.it"
lcPath = "/FseInsServicesWeb/services/fseStatoConsensi"

loReq = CreateObject('Chilkat.HttpRequest')
loReq.HttpVerb = "POST"
loReq.SendCharset = 0
loReq.AddHeader("Content-Type","application/soap+xml; charset=utf-8")
loReq.Path = lcPath
lnSuccess = loReq.LoadBodyFromString(lcSoapEnvelope,"utf-8")

*  Load the default certificate from the smartcard currently in the reader.
*  (This assumes only one reader with one smartcard containing one certificate.
*  If the situation is more complex, you can do it with Chilkat, but it requires
*  using the Chilkat certificate store object to get the desired certificate
*  from the desired smart card.)
*  
*  Note: This is for Windows-only.
loCert = CreateObject('Chilkat.Cert')
lnSuccess = loCert.LoadFromSmartcard("")
IF (lnSuccess = 0) THEN
    ? loCert.LastErrorText
    RELEASE loHttp
    RELEASE loXml
    RELEASE loReq
    RELEASE loCert
    CANCEL
ENDIF

*  Tell the Chilkat HTTP object to use the certificate for client authentication.
lnSuccess = loHttp.SetSslClientCert(loCert)
IF (lnSuccess = 0) THEN
    ? loHttp.LastErrorText
    RELEASE loHttp
    RELEASE loXml
    RELEASE loReq
    RELEASE loCert
    CANCEL
ENDIF

loHttp.SslProtocol = "TLS 1.1"

loResp = CreateObject('Chilkat.HttpResponse')
lnSuccess = loHttp.HttpSReq(lcDomain,443,1,loReq,loResp)
IF (lnSuccess = 0) THEN
    ? loHttp.LastErrorText
    RELEASE loHttp
    RELEASE loXml
    RELEASE loReq
    RELEASE loCert
    RELEASE loResp
    CANCEL
ENDIF

loXmlResp = CreateObject('Chilkat.Xml')
lnSuccess = loXmlResp.LoadXml(loResp.BodyStr)
? loXmlResp.GetXml()

RELEASE loHttp
RELEASE loXml
RELEASE loReq
RELEASE loCert
RELEASE loResp
RELEASE loXmlResp