Sample code for 30+ languages & platforms
Tcl Requires Chilkat v11.0.0+

TicketBAI -- Send HTTP POST

See more TicketBAI Examples

Demonstrates how to send a TicketBAI POST and get the response.

Chilkat Tcl Downloads

Tcl

load ./chilkat.dll

set success 0

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

set http [new_CkHttp]

set success [CkHttp_SetSslClientCertPfx $http "your.pfx" "pfx_password"]
if {$success == 0} then {
    puts [CkHttp_lastErrorText $http]
    delete_CkHttp $http
    exit
}

#  Get the XML we wish to send in the body of the request.
set sbXml [new_CkStringBuilder]

set success [CkStringBuilder_LoadFile $sbXml "qa_data/payload.xml" "utf-8"]
if {$success == 0} then {
    puts "Failed to load XML that is to be the HTTP request body"
    delete_CkHttp $http
    delete_CkStringBuilder $sbXml
    exit
}

#  Build the following JSON

#  { 
#      "con": "LROE", 
#      "apa": "1.1", 
#      "inte": { 
#          "nif": "número de identificación fiscal", 
#          "nrs": "nombre o Razón social", 
#          "ap1": "primer apellido", 
#          "ap2": "segundo apellido" 
#      }, 
#      "drs": { 
#      "mode": "140", 
#      "ejer": "ejercicio" 
#      } 
#  }

#  Use this online tool to generate code from sample JSON: 
#  Generate Code to Create JSON

set json [new_CkJsonObject]

CkJsonObject_UpdateString $json "con" "LROE"
CkJsonObject_UpdateString $json "apa" "1.1"
CkJsonObject_UpdateString $json "inte.nif" "número de identificación fiscal"
CkJsonObject_UpdateString $json "inte.nrs" "nombre o Razón social"
CkJsonObject_UpdateString $json "inte.ap1" "primer apellido"
CkJsonObject_UpdateString $json "inte.ap2" "segundo apellido"
CkJsonObject_UpdateString $json "drs.mode" "140"
CkJsonObject_UpdateString $json "drs.ejer" "ejercicio"

#  Add required headers...
CkHttp_SetRequestHeader $http "eus-bizkaia-n3-version" "1.0"
CkHttp_SetRequestHeader $http "eus-bizkaia-n3-content-type" "application/xml"
CkHttp_SetRequestHeader $http "eus-bizkaia-n3-data" [CkJsonObject_emit $json]

set url "https://pruesarrerak.bizkaia.eus/N3B4000M/aurkezpena"
set resp [new_CkHttpResponse]

CkHttp_put_UncommonOptions $http "SendGzipped"
set success [CkHttp_HttpSb $http "POST" $url $sbXml "utf-8" "application/octet-stream" $resp]
if {$success == 0} then {
    puts [CkHttp_lastErrorText $http]
    delete_CkHttp $http
    delete_CkStringBuilder $sbXml
    delete_CkJsonObject $json
    delete_CkHttpResponse $resp
    exit
}

CkHttp_ClearHeaders $http

puts "response status code: [CkHttpResponse_get_StatusCode $resp]"

#  Examine the response (it is already decompressed)
puts "response body:"
puts [CkHttpResponse_bodyStr $resp]

delete_CkHttp $http
delete_CkStringBuilder $sbXml
delete_CkJsonObject $json
delete_CkHttpResponse $resp