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
(DataFlex) URL Encoding Charset in POST Query ParamsDemonstrates how to control the URL encoding charset in POST query params.
Use ChilkatAx-win32.pkg Procedure Test String sNameWin1252Encoded Handle hoSb Boolean iSuccess Handle hoHttp Variant vReq Handle hoReq Variant vResp Handle hoResp String sTemp1 Boolean bTemp1 // This example requires the Chilkat API to have been previously unlocked. // See Global Unlock Sample for sample code. // We have the string "MÆRSK". Move "M%E6RSK" To sNameWin1252Encoded // Note: The DecodeAndAppend method is newly added in Chilkat v9.5.0.87 Get Create (RefClass(cComChilkatStringBuilder)) To hoSb If (Not(IsComObjectCreated(hoSb))) Begin Send CreateComObject of hoSb End Get ComDecodeAndAppend Of hoSb sNameWin1252Encoded "url" "windows-1252" To iSuccess Get Create (RefClass(cComChilkatHttp)) To hoHttp If (Not(IsComObjectCreated(hoHttp))) Begin Send CreateComObject of hoHttp End // We're setting the session log filename so we can see the exact request sent. Set ComSessionLogFilename Of hoHttp To "qa_output/sessionLog.txt" // First demonstrate a simple application/x-www-form-urlencoded POST Get Create (RefClass(cComChilkatHttpRequest)) To hoReq If (Not(IsComObjectCreated(hoReq))) Begin Send CreateComObject of hoReq End // Set the Charset = "utf-8" to cause URL encoding to use utf-8. Set ComCharset Of hoReq To "utf-8" Get ComGetAsString Of hoSb To sTemp1 Send ComAddParam To hoReq "name" sTemp1 Get pvComObject of hoReq to vReq Get ComPostUrlEncoded Of hoHttp "https://www.chilkatsoft.com/something" vReq To vResp If (IsComObject(vResp)) Begin Get Create (RefClass(cComChilkatHttpResponse)) To hoResp Set pvComObject Of hoResp To vResp End Get ComLastMethodSuccess Of hoHttp To bTemp1 If (bTemp1 = False) Begin Get ComLastErrorText Of hoHttp To sTemp1 Showln sTemp1 Procedure_Return End // This is the request that is sent: // Notice that utf-8 is used in the query param (the letter 'Æ' is %C3%A6) // POST /something HTTP/1.1 // Host: www.chilkatsoft.com // Content-Type: application/x-www-form-urlencoded // Content-Length: 15 // // name=M%C3%A6RSK Send Destroy of hoResp // --------------------------------------------------------------- // Switch to windows-1252 Set ComCharset Of hoReq To "windows-1252" Get pvComObject of hoReq to vReq Get ComPostUrlEncoded Of hoHttp "https://www.chilkatsoft.com/something" vReq To vResp If (IsComObject(vResp)) Begin Get Create (RefClass(cComChilkatHttpResponse)) To hoResp Set pvComObject Of hoResp To vResp End Get ComLastMethodSuccess Of hoHttp To bTemp1 If (bTemp1 = False) Begin Get ComLastErrorText Of hoHttp To sTemp1 Showln sTemp1 Procedure_Return End // This is the request that is sent: // Notice that windows-1252 is used in the query param (the letter 'Æ' is %E6) // POST /something HTTP/1.1 // Host: www.chilkatsoft.com // Content-Type: application/x-www-form-urlencoded // Content-Length: 12 // // name=M%E6RSK Send Destroy of hoResp // --------------------------------------------------------------- // Let's do the same with SynchronousRequest, switching back to utf-8 Set ComPath Of hoReq To "/something" Set ComHttpVerb Of hoReq To "POST" Set ComContentType Of hoReq To "application/x-www-form-urlencoded" Set ComCharset Of hoReq To "utf-8" Get pvComObject of hoReq to vReq Get ComSynchronousRequest Of hoHttp "www.chilkatsoft.com" 443 True vReq To vResp If (IsComObject(vResp)) Begin Get Create (RefClass(cComChilkatHttpResponse)) To hoResp Set pvComObject Of hoResp To vResp End Get ComLastMethodSuccess Of hoHttp To bTemp1 If (bTemp1 = False) Begin Get ComLastErrorText Of hoHttp To sTemp1 Showln sTemp1 Procedure_Return End // This is the request that is sent: // Notice that utf-8 is used in the query param (the letter 'Æ' is %C3%A6) // POST /something HTTP/1.1 // Host: www.chilkatsoft.com // Content-Type: application/x-www-form-urlencoded // Content-Length: 15 // // name=M%C3%A6RSK Send Destroy of hoResp // --------------------------------------------------------------- // Let's do a PostXml where the query params are in the HTTP request start line, // and the Content-Type is text/xml where the body of the request is XML. Set ComPath Of hoReq To "/something" Set ComHttpVerb Of hoReq To "POST" Set ComContentType Of hoReq To "text/xml" Get ComLoadBodyFromString Of hoReq "<test>123</test>" "utf-8" To iSuccess Set ComCharset Of hoReq To "utf-8" // Remember... our request object still contains the query param added in the above call to AddParam. Get pvComObject of hoReq to vReq Get ComSynchronousRequest Of hoHttp "www.chilkatsoft.com" 443 True vReq To vResp If (IsComObject(vResp)) Begin Get Create (RefClass(cComChilkatHttpResponse)) To hoResp Set pvComObject Of hoResp To vResp End Get ComLastMethodSuccess Of hoHttp To bTemp1 If (bTemp1 = False) Begin Get ComLastErrorText Of hoHttp To sTemp1 Showln sTemp1 Procedure_Return End // This is the request that is sent: // Notice that utf-8 is used in the query param (the letter 'Æ' is %C3%A6) // POST /something?name=M%C3%A6RSK HTTP/1.1 // Host: www.chilkatsoft.com // Content-Type: text/xml // Content-Length: 16 // // <test>123</test> Send Destroy of hoResp End_Procedure |
© 2000-2024 Chilkat Software, Inc. All Rights Reserved.