Lua
Lua
Send HTTP POST using non-UTF8 such as Windows-1250
See more HTTP Examples
Demonstrates how to specify the character encoding (charset) to be used for the body of an HTTP POST.Chilkat Lua Downloads
local chilkat = require("chilkat")
-- This example requires the Chilkat API to have been previously unlocked.
-- See Global Unlock Sample for sample code.
local http = chilkat.Http.new()
local req = chilkat.HttpRequest.new()
-- Load a JSON file containing strings with Polish chars.
local json = chilkat.JsonObject.new()
local success = json:load_file("qa_data/json/has_polish_chars.json")
if not success then
print(json.last_error_text)
return
end
-- Add the request params expected by the server-side:
req:add_param("tytul", json:string_of("tytul"))
req:add_param("tresc", json:string_of("tresc"))
-- Indicate we wish to explicitly send the charset attribute in the HTTP request header.
req.send_charset = true
-- Send the POST
-- You can send the POST to the URL below. It will respond with the request body in quoted-printable format.
-- Using quoted-printable, we can easily see the binary bytes for the accented chars.
req.http_verb = "POST"
req.content_type = "application/x-www-form-urlencoded"
local resp = chilkat.HttpResponse.new()
success = http:http_req("https://www.chilkatsoft.com/echoPost.cshtml", req, resp)
if not success then
print(http.last_error_text)
return
end
print(http.last_header)
print(resp.body_str)
-- Sample output:
-- --------------------------------------------------
-- POST /echoPost.cshtml HTTP/1.1
-- Host: www.chilkatsoft.com
-- Content-Type: application/x-www-form-urlencoded; charset=utf-8
-- Content-Length: 79
--
-- <pre>tytul=3DPrzyk%C5%82ad&tresc=3DPrzyk%C5%82ad
-- %82oszenie</pre>
-- --------------------------------------------------
-- We can see by the %C5%82 that utf-8 was sent, because %C5%82 is the 2-byte representation of a particular Polish char.
-- -----------------------
-- However.. we can change the charset used for the HTTP request by specifying the request object's charset.
req.send_charset = true
req.charset = "windows-1250"
req.http_verb = "POST"
req.content_type = "application/x-www-form-urlencoded"
success = http:http_req("https://www.chilkatsoft.com/echoPost.cshtml", req, resp)
if not success then
print(http.last_error_text)
return
end
print(http.last_header)
print(resp.body_str)
-- Sample output...
-- You can see how the bytes used for the Polish chars are now 1-byte per char (i.e. using Windows-1250)
-- --------------------------------------------------
-- POST /echoPost.cshtml HTTP/1.1
-- Host: www.chilkatsoft.com
-- Content-Type: application/x-www-form-urlencoded; charset=windows-1250
-- Content-Length: 70
--
-- <pre>tytul=3DPrzyk%B3ad&tresc=3DPrzyk%B3ad
-- e</pre>
-- --------------------------------------------------