Chilkat HOME .NET Core C# Android™ AutoIt C C# C++ Chilkat2-Python CkPython Classic ASP DataFlex Delphi ActiveX Delphi DLL Go Java Lianja Mono C# Node.js Objective-C PHP ActiveX PHP Extension Perl PowerBuilder PowerShell PureBasic Ruby SQL Server Swift 2 Swift 3,4,5... Tcl Unicode C Unicode C++ VB.NET VBScript Visual Basic 6.0 Visual FoxPro Xojo Plugin
(SQL Server) Send HTTP POST using non-UTF8 such as Windows-1250Demonstrates how to specify the character encoding (charset) to be used for the body of an HTTP POST.
-- Important: See this note about string length limitations for strings returned by sp_OAMethod calls. -- CREATE PROCEDURE ChilkatSample AS BEGIN DECLARE @hr int DECLARE @iTmp0 int -- Important: Do not use nvarchar(max). See the warning about using nvarchar(max). DECLARE @sTmp0 nvarchar(4000) -- This example requires the Chilkat API to have been previously unlocked. -- See Global Unlock Sample for sample code. DECLARE @http int -- Use "Chilkat_9_5_0.Http" for versions of Chilkat < 10.0.0 EXEC @hr = sp_OACreate 'Chilkat.Http', @http OUT IF @hr <> 0 BEGIN PRINT 'Failed to create ActiveX component' RETURN END DECLARE @req int -- Use "Chilkat_9_5_0.HttpRequest" for versions of Chilkat < 10.0.0 EXEC @hr = sp_OACreate 'Chilkat.HttpRequest', @req OUT -- Load a JSON file containing strings with Polish chars. DECLARE @json int -- Use "Chilkat_9_5_0.JsonObject" for versions of Chilkat < 10.0.0 EXEC @hr = sp_OACreate 'Chilkat.JsonObject', @json OUT DECLARE @success int EXEC sp_OAMethod @json, 'LoadFile', @success OUT, 'qa_data/json/has_polish_chars.json' IF @success = 0 BEGIN EXEC sp_OAGetProperty @json, 'LastErrorText', @sTmp0 OUT PRINT @sTmp0 EXEC @hr = sp_OADestroy @http EXEC @hr = sp_OADestroy @req EXEC @hr = sp_OADestroy @json RETURN END -- Add the request params expected by the server-side: EXEC sp_OAMethod @json, 'StringOf', @sTmp0 OUT, 'tytul' EXEC sp_OAMethod @req, 'AddParam', NULL, 'tytul', @sTmp0 EXEC sp_OAMethod @json, 'StringOf', @sTmp0 OUT, 'tresc' EXEC sp_OAMethod @req, 'AddParam', NULL, 'tresc', @sTmp0 -- Indicate we wish to explicitly send the charset attribute in the HTTP request header. EXEC sp_OASetProperty @req, 'SendCharset', 1 -- 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. DECLARE @resp int EXEC sp_OAMethod @http, 'PostUrlEncoded', @resp OUT, 'https://www.chilkatsoft.com/echoPost.cshtml', @req EXEC sp_OAGetProperty @http, 'LastMethodSuccess', @iTmp0 OUT IF @iTmp0 <> 1 BEGIN EXEC sp_OAGetProperty @http, 'LastErrorText', @sTmp0 OUT PRINT @sTmp0 EXEC @hr = sp_OADestroy @http EXEC @hr = sp_OADestroy @req EXEC @hr = sp_OADestroy @json RETURN END EXEC sp_OAGetProperty @http, 'LastHeader', @sTmp0 OUT PRINT @sTmp0 EXEC sp_OAGetProperty @resp, 'BodyStr', @sTmp0 OUT PRINT @sTmp0 -- 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. EXEC @hr = sp_OADestroy @resp -- ----------------------- -- However.. we can change the charset used for the HTTP request by specifying the request object's charset. EXEC sp_OASetProperty @req, 'SendCharset', 1 EXEC sp_OASetProperty @req, 'Charset', 'windows-1250' EXEC sp_OAMethod @http, 'PostUrlEncoded', @resp OUT, 'https://www.chilkatsoft.com/echoPost.cshtml', @req EXEC sp_OAGetProperty @http, 'LastMethodSuccess', @iTmp0 OUT IF @iTmp0 <> 1 BEGIN EXEC sp_OAGetProperty @http, 'LastErrorText', @sTmp0 OUT PRINT @sTmp0 EXEC @hr = sp_OADestroy @http EXEC @hr = sp_OADestroy @req EXEC @hr = sp_OADestroy @json RETURN END EXEC sp_OAGetProperty @http, 'LastHeader', @sTmp0 OUT PRINT @sTmp0 EXEC sp_OAGetProperty @resp, 'BodyStr', @sTmp0 OUT PRINT @sTmp0 -- 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> -- -------------------------------------------------- EXEC @hr = sp_OADestroy @resp EXEC @hr = sp_OADestroy @http EXEC @hr = sp_OADestroy @req EXEC @hr = sp_OADestroy @json END GO |
© 2000-2024 Chilkat Software, Inc. All Rights Reserved.