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.TlsVersion = "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