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) Google Contacts - Retrieve as JSONDemonstrates how to retrieve Google Contacts as JSON.
-- 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. -- -------------------------------------------------------------------------------------------------------- -- Note: The code for setting up the Chilkat REST object and making the initial connection can be done once. -- Once connected, the REST object may be re-used for many REST API calls. -- (It's a good idea to put the connection setup code in a separate function/subroutine.) -- -------------------------------------------------------------------------------------------------------- -- It is assumed we previously obtained an OAuth2 access token. -- This example loads the JSON access token file -- saved by this example: Get Google Contacts OAuth2 Access Token DECLARE @jsonToken int -- Use "Chilkat_9_5_0.JsonObject" for versions of Chilkat < 10.0.0 EXEC @hr = sp_OACreate 'Chilkat.JsonObject', @jsonToken OUT IF @hr <> 0 BEGIN PRINT 'Failed to create ActiveX component' RETURN END DECLARE @success int EXEC sp_OAMethod @jsonToken, 'LoadFile', @success OUT, 'qa_data/tokens/googleContacts.json' IF @success <> 1 BEGIN PRINT 'Failed to load googleContacts.json' EXEC @hr = sp_OADestroy @jsonToken RETURN END DECLARE @gAuth int -- Use "Chilkat_9_5_0.AuthGoogle" for versions of Chilkat < 10.0.0 EXEC @hr = sp_OACreate 'Chilkat.AuthGoogle', @gAuth OUT EXEC sp_OAMethod @jsonToken, 'StringOf', @sTmp0 OUT, 'access_token' EXEC sp_OASetProperty @gAuth, 'AccessToken', @sTmp0 DECLARE @rest int -- Use "Chilkat_9_5_0.Rest" for versions of Chilkat < 10.0.0 EXEC @hr = sp_OACreate 'Chilkat.Rest', @rest OUT -- Connect using TLS. DECLARE @bAutoReconnect int SELECT @bAutoReconnect = 1 EXEC sp_OAMethod @rest, 'Connect', @success OUT, 'www.google.com', 443, 1, @bAutoReconnect -- Provide the authentication credentials (i.e. the access token) EXEC sp_OAMethod @rest, 'SetAuthGoogle', @success OUT, @gAuth -- ---------------------------------------------- -- OK, the REST connection setup is completed.. -- ---------------------------------------------- -- To retrieve the contacts, we need to send the following: -- GET /m8/feeds/contacts/default/full -- GData-Version: 3.0 -- To get the contacts data in JSON format, set the "alt" query parameter to "json" EXEC sp_OAMethod @rest, 'AddQueryParam', @success OUT, 'alt', 'json' EXEC sp_OAMethod @rest, 'AddHeader', @success OUT, 'GData-Version', '3.0' DECLARE @sbResponseBody int -- Use "Chilkat_9_5_0.StringBuilder" for versions of Chilkat < 10.0.0 EXEC @hr = sp_OACreate 'Chilkat.StringBuilder', @sbResponseBody OUT EXEC sp_OAMethod @rest, 'FullRequestNoBodySb', @success OUT, 'GET', '/m8/feeds/contacts/default/full', @sbResponseBody IF @success <> 1 BEGIN EXEC sp_OAGetProperty @rest, 'LastErrorText', @sTmp0 OUT PRINT @sTmp0 EXEC @hr = sp_OADestroy @jsonToken EXEC @hr = sp_OADestroy @gAuth EXEC @hr = sp_OADestroy @rest EXEC @hr = sp_OADestroy @sbResponseBody RETURN END -- A successful response will have a status code equal to 200. EXEC sp_OAGetProperty @rest, 'ResponseStatusCode', @iTmp0 OUT IF @iTmp0 <> 200 BEGIN EXEC sp_OAGetProperty @rest, 'ResponseStatusCode', @iTmp0 OUT PRINT 'response status code = ' + @iTmp0 EXEC sp_OAGetProperty @rest, 'ResponseStatusText', @sTmp0 OUT PRINT 'response status text = ' + @sTmp0 EXEC sp_OAGetProperty @rest, 'ResponseHeader', @sTmp0 OUT PRINT 'response header: ' + @sTmp0 EXEC sp_OAMethod @sbResponseBody, 'GetAsString', @sTmp0 OUT PRINT 'response body: ' + @sTmp0 EXEC @hr = sp_OADestroy @jsonToken EXEC @hr = sp_OADestroy @gAuth EXEC @hr = sp_OADestroy @rest EXEC @hr = sp_OADestroy @sbResponseBody RETURN END -- If the 200 response was received, then the contacts JSON is contained -- in the response body. DECLARE @json int -- Use "Chilkat_9_5_0.JsonObject" for versions of Chilkat < 10.0.0 EXEC @hr = sp_OACreate 'Chilkat.JsonObject', @json OUT EXEC sp_OAMethod @json, 'LoadSb', @success OUT, @sbResponseBody EXEC sp_OASetProperty @json, 'EmitCompact', 0 -- Save the pretty-printed JSON response to a file. EXEC sp_OAMethod @sbResponseBody, 'Clear', NULL EXEC sp_OAMethod @json, 'EmitSb', @success OUT, @sbResponseBody EXEC sp_OAMethod @sbResponseBody, 'WriteFile', @success OUT, 'qa_output/google_contacts.json', 'utf-8', 0 -- Parse the Google Contacts JSON, and iterate over the contacts.. DECLARE @totalResults int EXEC sp_OAMethod @json, 'IntOf', @totalResults OUT, 'feed.openSearch$totalResults.$t' DECLARE @startIndex int EXEC sp_OAMethod @json, 'IntOf', @startIndex OUT, 'feed.openSearch$startIndex.$t' DECLARE @itemsPerPage int EXEC sp_OAMethod @json, 'IntOf', @itemsPerPage OUT, 'feed.openSearch$itemsPerPage.$t' PRINT 'totalResults = ' + @totalResults PRINT 'startIndex = ' + @startIndex PRINT 'itemsPerPage = ' + @itemsPerPage DECLARE @numEntries int EXEC sp_OAMethod @json, 'SizeOfArray', @numEntries OUT, 'feed.entry' DECLARE @i int SELECT @i = 0 WHILE @i < @numEntries BEGIN EXEC sp_OASetProperty @json, 'I', @i PRINT @i + 1 + ' ----' EXEC sp_OAMethod @json, 'StringOf', @sTmp0 OUT, 'feed.entry[i].title.$t' PRINT 'title: ' + @sTmp0 DECLARE @fullName nvarchar(4000) EXEC sp_OAMethod @json, 'StringOf', @fullName OUT, 'feed.entry[i].gd$name.gd$fullName.$t' EXEC sp_OAGetProperty @json, 'LastMethodSuccess', @iTmp0 OUT IF @iTmp0 = 1 BEGIN PRINT 'fullName: ' + @fullName END -- There can be multiple email addresses, so it's stored as a JSON array.. DECLARE @numEmailAddresses int EXEC sp_OAMethod @json, 'SizeOfArray', @numEmailAddresses OUT, 'feed.entry[i].gd$email' DECLARE @j int SELECT @j = 0 WHILE @j < @numEmailAddresses BEGIN DECLARE @emailAddress nvarchar(4000) EXEC sp_OAMethod @json, 'StringOf', @emailAddress OUT, 'feed.entry[i].gd$email[j].address' EXEC sp_OAGetProperty @json, 'LastMethodSuccess', @iTmp0 OUT IF @iTmp0 = 1 BEGIN PRINT 'email address: ' + @emailAddress END SELECT @j = @j + 1 END SELECT @i = @i + 1 END -- A sample Google Contacts JSON response: -- { -- "version": "1.0", -- "encoding": "UTF-8", -- "feed": { -- "xmlns": "http://www.w3.org/2005/Atom", -- "xmlns$openSearch": "http://a9.com/-/spec/opensearch/1.1/", -- "xmlns$gContact": "http://schemas.google.com/contact/2008", -- "xmlns$batch": "http://schemas.google.com/gdata/batch", -- "xmlns$gd": "http://schemas.google.com/g/2005", -- "gd$etag": "\"QHw5eTVSLyt7I2A9XRFaE0kNTwI.\"", -- "id": { -- "$t": "chilkat.support@gmail.com" -- }, -- "updated": { -- "$t": "2016-11-17T01:57:41.221Z" -- }, -- "category": [ -- { -- "scheme": "http://schemas.google.com/g/2005#kind", -- "term": "http://schemas.google.com/contact/2008#contact" -- } -- ], -- "title": { -- "$t": "Chilkat Support's Contacts" -- }, -- "link": [ -- { -- "rel": "alternate", -- "type": "text/html", -- "href": "https://www.googleapis.com/" -- }, -- { -- "rel": "http://schemas.google.com/g/2005#feed", -- "type": "application/atom+xml", -- "href": "https://www.googleapis.com/m8/feeds/contacts/chilkat.support%40gmail.com/full" -- }, -- { -- "rel": "http://schemas.google.com/g/2005#post", -- "type": "application/atom+xml", -- "href": "https://www.googleapis.com/m8/feeds/contacts/chilkat.support%40gmail.com/full" -- }, -- { -- "rel": "http://schemas.google.com/g/2005#batch", -- "type": "application/atom+xml", -- "href": "https://www.googleapis.com/m8/feeds/contacts/chilkat.support%40gmail.com/full/batch" -- }, -- { -- "rel": "self", -- "type": "application/atom+xml", -- "href": "https://www.googleapis.com/m8/feeds/contacts/chilkat.support%40gmail.com/full?max-results=25&alt=json" -- }, -- { -- "rel": "next", -- "type": "application/atom+xml", -- "href": "https://www.googleapis.com/m8/feeds/contacts/chilkat.support%40gmail.com/full?max-results=25&alt=json&start-index=26" -- } -- ], -- "author": [ -- { -- "name": { -- "$t": "Chilkat Support" -- }, -- "email": { -- "$t": "chilkat.support@gmail.com" -- } -- } -- ], -- "generator": { -- "version": "1.0", -- "uri": "http://www.google.com/m8/feeds", -- "$t": "Contacts" -- }, -- "openSearch$totalResults": { -- "$t": "350" -- }, -- "openSearch$startIndex": { -- "$t": "1" -- }, -- "openSearch$itemsPerPage": { -- "$t": "25" -- }, -- "entry": [ -- { -- "id": { -- "$t": "http://www.google.com/m8/feeds/contacts/chilkat.support%40gmail.com/base/0" -- }, -- "gd$etag": "\"SX8zcTVSLyt7I2A9WxBXFU4MQwI.\"", -- "updated": { -- "$t": "2010-01-26T20:07:48.189Z" -- }, -- "app$edited": { -- "xmlns$app": "http://www.w3.org/2007/app", -- "$t": "2010-01-26T20:07:48.189Z" -- }, -- "category": [ -- { -- "scheme": "http://schemas.google.com/g/2005#kind", -- "term": "http://schemas.google.com/contact/2008#contact" -- } -- ], -- "title": { -- "$t": "Joe Sample" -- }, -- "link": [ -- { -- "rel": "http://schemas.google.com/contacts/2008/rel#photo", -- "type": "image/*", -- "href": "https://www.googleapis.com/m8/feeds/photos/media/chilkat.support%40gmail.com/0" -- }, -- { -- "rel": "self", -- "type": "application/atom+xml", -- "href": "https://www.googleapis.com/m8/feeds/contacts/chilkat.support%40gmail.com/full/0" -- }, -- { -- "rel": "edit", -- "type": "application/atom+xml", -- "href": "https://www.googleapis.com/m8/feeds/contacts/chilkat.support%40gmail.com/full/0" -- } -- ], -- "gd$name": { -- "gd$fullName": { -- "$t": "Joe Sample" -- }, -- "gd$givenName": { -- "$t": "Joe" -- }, -- "gd$familyName": { -- "$t": "Sample" -- } -- }, -- "gd$email": [ -- { -- "address": "somebody@gmail.com", -- "primary": "true", -- "rel": "http://schemas.google.com/g/2005#other" -- } -- ] -- }, -- ... more entries ... -- EXEC @hr = sp_OADestroy @jsonToken EXEC @hr = sp_OADestroy @gAuth EXEC @hr = sp_OADestroy @rest EXEC @hr = sp_OADestroy @sbResponseBody EXEC @hr = sp_OADestroy @json END GO |
© 2000-2024 Chilkat Software, Inc. All Rights Reserved.