Sample code for 30+ languages & platforms
Tcl

QR Code Generator via api.qrserver.com REST API

See more HTTP Examples

Demonstrates how to generate a QR code using the api.qrserver.com REST API service.

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]

# Send the following GET request to get a binary response.
# The body of the binary response contains the image data for the QR code.
# https://api.qrserver.com/v1/create-qr-code/?data=[URL-encoded-text]&size=[pixels]x[pixels]

set queryParams [new_CkJsonObject]

CkJsonObject_UpdateString $queryParams "data" "Hello World"
CkJsonObject_UpdateString $queryParams "size" "100x100"

# Get a PNG file..
# Possible formats are:
# png
# gif
# jpeg
# jpg
# svg
# eps
# Case matters.  Use lowercase.
CkJsonObject_UpdateString $queryParams "format" "png"

# Send the GET request to an endpoint.
# Chilkat will add the url-encoded query params passed in the JSON.
set resp [new_CkHttpResponse]

set success [CkHttp_HttpParams $http "GET" "https://api.qrserver.com/v1/create-qr-code/" $queryParams $resp]
if {$success == 0} then {
    puts [CkHttp_lastErrorText $http]
    delete_CkHttp $http
    delete_CkJsonObject $queryParams
    delete_CkHttpResponse $resp
    exit
}

# Did it succeed?
if {[CkHttpResponse_get_StatusCode $resp] != 200} then {
    # The response body, if anything, would not be the image data, but would likely be the error text (or HTML, or whatever...)
    puts [CkHttpResponse_bodyStr $resp]
    puts "Response status = [CkHttpResponse_get_StatusCode $resp]"
    puts "Failed."
    delete_CkHttp $http
    delete_CkJsonObject $queryParams
    delete_CkHttpResponse $resp
    exit
}

# Success if we get here..
# Save the binary body as the PNG file, or you can get the bytes of the PNG..
set success [CkHttpResponse_SaveBodyBinary $resp "c:/temp/qa_output/qr_code.png"]

# Or get the bytes:
set bd [new_CkBinData]

CkHttpResponse_GetBodyBd $resp $bd
# Use the bytes in bd...
# See the online reference documentation for the function to access the bytes directly.

puts "Success."

delete_CkHttp $http
delete_CkJsonObject $queryParams
delete_CkHttpResponse $resp
delete_CkBinData $bd