Sample code for 30+ languages & platforms
SQL Server

Creating an application/json HTTP POST Request

See more HTTP Examples

Demonstrates 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"
      }
    ]
  }
}

Chilkat SQL Server Downloads

SQL Server
-- 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
    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
    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 @hr = sp_OACreate 'Chilkat.JsonObject', @vFactors OUT

    EXEC sp_OAMethod @json, 'AppendObject2', @success OUT, 'validation-factors', @vFactors

    DECLARE @vArray int
    EXEC @hr = sp_OACreate 'Chilkat.JsonArray', @vArray OUT

    EXEC sp_OAMethod @vFactors, 'AppendArray2', @success OUT, 'validationFactors', @vArray

    DECLARE @factorObj int
    EXEC @hr = sp_OACreate 'Chilkat.JsonObject', @factorObj OUT

    EXEC sp_OAMethod @vArray, 'AddObjectAt2', @success OUT, 0, @factorObj
    EXEC sp_OAMethod @factorObj, 'AppendString', @success OUT, 'name', 'remote_address'
    EXEC sp_OAMethod @factorObj, 'AppendString', @success OUT, 'value', '127.0.0.1'

    -- 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 HttpSReq 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 HttpSReq
    --    is called

    EXEC @hr = sp_OADestroy @req
    EXEC @hr = sp_OADestroy @json
    EXEC @hr = sp_OADestroy @vFactors
    EXEC @hr = sp_OADestroy @vArray
    EXEC @hr = sp_OADestroy @factorObj


END
GO