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) Creating an application/json HTTP POST RequestDemonstrates how to create an HTTP POST request having the Content-Type application/json, where the body of the HTTP request is the following JSON: { "username" : "my_username", "password" : "my_password", "validation-factors" : { "validationFactors" : [ { "name" : "remote_address", "value" : "127.0.0.1" } ] } } The generated HTTP request looks like this: POST /something HTTP/1.1 Content-Type: application/json Accept: application/json Host: domain Content-Length: 216 { "username": "my_username", "password": "my_password", "validation-factors": { "validationFactors": [ { "name": "remote_address", "value": "127.0.0.1" } ] } }
-- Important: See this note about string length limitations for strings returned by sp_OAMethod calls. -- CREATE PROCEDURE ChilkatSample AS BEGIN DECLARE @hr int -- Important: Do not use nvarchar(max). See the warning about using nvarchar(max). DECLARE @sTmp0 nvarchar(4000) -- This example demonstrates building an application/json request. DECLARE @req int -- Use "Chilkat_9_5_0.HttpRequest" for versions of Chilkat < 10.0.0 EXEC @hr = sp_OACreate 'Chilkat.HttpRequest', @req OUT IF @hr <> 0 BEGIN PRINT 'Failed to create ActiveX component' RETURN END -- The ContentType, HttpVerb, and Path properties should -- always be explicitly set. EXEC sp_OASetProperty @req, 'HttpVerb', 'POST' EXEC sp_OASetProperty @req, 'Path', '/something' EXEC sp_OASetProperty @req, 'ContentType', 'application/json' -- We may wish to add an "Accept" header to the request. -- This tells the server we'll accept an application/json response. EXEC sp_OAMethod @req, 'AddHeader', NULL, 'Accept', 'application/json' -- We'll use Chilkat's JSON API to create the JSON body of the HTTP request. 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, 'AppendString', @success OUT, 'username', 'my_username' EXEC sp_OAMethod @json, 'AppendString', @success OUT, 'password', 'my_password' DECLARE @vFactors int EXEC sp_OAMethod @json, 'AppendObject', @vFactors OUT, 'validation-factors' DECLARE @vArray int EXEC sp_OAMethod @vFactors, 'AppendArray', @vArray OUT, 'validationFactors' EXEC sp_OAMethod @vArray, 'AddObjectAt', @success OUT, 0 DECLARE @factorObj int EXEC sp_OAMethod @vArray, 'ObjectAt', @factorObj OUT, 0 EXEC sp_OAMethod @factorObj, 'AppendString', @success OUT, 'name', 'remote_address' EXEC sp_OAMethod @factorObj, 'AppendString', @success OUT, 'value', '127.0.0.1' EXEC @hr = sp_OADestroy @factorObj EXEC @hr = sp_OADestroy @vArray EXEC @hr = sp_OADestroy @vFactors -- Use the JSON for the HTTP request body -- By default, the Emit method will output compact JSON. -- This is best for generating the smallest size request. -- To generate a more human-readable (pretty-printed) JSON request body, -- set the EmitCompact property to FALSE EXEC sp_OASetProperty @json, 'EmitCompact', 0 EXEC sp_OAMethod @json, 'Emit', @sTmp0 OUT EXEC sp_OAMethod @req, 'LoadBodyFromString', @success OUT, @sTmp0, 'utf-8' -- View the request that would be sent if SynchronousRequest was called: DECLARE @requestMime nvarchar(4000) EXEC sp_OAMethod @req, 'GenerateRequestText', @requestMime OUT PRINT @requestMime -- A few important comments about the HTTP request that is generated: -- -- 1) The Content-Length header is automatically generated based on the actual length of the MIME message -- that follows the intial (topmost) MIME header. -- 2) The HOST header will automatically get filled in with the actual domain when SynchronousRequest -- is called EXEC @hr = sp_OADestroy @req EXEC @hr = sp_OADestroy @json END GO |
© 2000-2024 Chilkat Software, Inc. All Rights Reserved.