Unicode C
Unicode C
Download SharePoint Lists and JSON Iterate
See more SharePoint Examples
Downloads the JSON containing the list of SharePoint lists, and iterates to get information for each.Chilkat Unicode C Downloads
#include <C_CkHttpW.h>
#include <C_CkStringBuilderW.h>
#include <C_CkJsonObjectW.h>
void ChilkatSample(void)
{
BOOL success;
HCkHttpW http;
HCkStringBuilderW sbJson;
HCkJsonObjectW json;
int numLists;
int i;
const wchar_t *title;
const wchar_t *uri;
success = FALSE;
// This requires the Chilkat API to have been previously unlocked.
// See Global Unlock Sample for sample code.
// -------------------------------------------------------------------------
// The following comments apply to SharePoint Windows classic authentication.
// -------------------------------------------------------------------------
// For example, imagine our SharePoint endpoint is https://xyzoffice.mycompany.com/
// The SHAREPOINT_NTLM_DOMAIN would be "mycompany.com"
// The SHAREPOINT_HTTPS_DOMAIN would be "xyzoffice.mycompany.com"
// Also, the SHAREPOINT_USERNAME would be just the name, not a full email address.
// for example, "chilkat" instead of "chilkat@mycompany.com"
http = CkHttpW_Create();
// If SharePoint Windows classic authentication is used, then set the
// Login, Password, LoginDomain, and NtlmAuth properties.
CkHttpW_putLogin(http,L"SHAREPOINT_USERNAME");
CkHttpW_putPassword(http,L"SHAREPOINT_PASSWORD");
CkHttpW_putLoginDomain(http,L"SHAREPOINT_NTLM_DOMAIN");
CkHttpW_putNtlmAuth(http,TRUE);
// -------------------------------------------------------------------------
// The more common case is to use SharePoint Online authentication (via the SPOIDCRL cookie).
// If so, do not set Login, Password, LoginDomain, and NtlmAuth, and instead
// establish the cookie as shown at SharePoint Online Authentication
// -------------------------------------------------------------------------
// Indicate that we want a JSON reply
CkHttpW_putAccept(http,L"application/json;odata=verbose");
CkHttpW_putAcceptCharset(http,L"utf-8");
sbJson = CkStringBuilderW_Create();
success = CkHttpW_QuickGetSb(http,L"https://SHAREPOINT_HTTPS_DOMAIN/_api/web/lists",sbJson);
if (success != TRUE) {
wprintf(L"%s\n",CkHttpW_lastErrorText(http));
CkHttpW_Dispose(http);
CkStringBuilderW_Dispose(sbJson);
return;
}
json = CkJsonObjectW_Create();
CkJsonObjectW_LoadSb(json,sbJson);
CkJsonObjectW_putEmitCompact(json,FALSE);
// Iterate over the list of lists and show information for each list.
numLists = CkJsonObjectW_SizeOfArray(json,L"d.results");
i = 0;
while (i < numLists) {
CkJsonObjectW_putI(json,i);
title = CkJsonObjectW_stringOf(json,L"d.results[i].Title");
uri = CkJsonObjectW_stringOf(json,L"d.results[i].__metadata.uri");
wprintf(L"%d: %s\n",i + 1,title);
wprintf(L"URI: %s\n",uri);
// To retrieve the contents of a particular list, an app would send a GET request to the list's URI.
i = i + 1;
}
// The output will look similar to this:
// 1: appdata
// URI: https://xyzoffice.mycompany.com/_api/Web/Lists(guid'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx')
// 2: Briefing 02032017
// URI: https://xyzoffice.mycompany.com/_api/Web/Lists(guid'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx')
// 3: Cache Profiles
// URI: https://xyzoffice.mycompany.com/_api/Web/Lists(guid'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx')
// 4: Composed Looks
// URI: https://xyzoffice.mycompany.com/_api/Web/Lists(guid'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx')
// 5: Content and Structure Reports
// URI: https://xyzoffice.mycompany.com/_api/Web/Lists(guid'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx')
// 6: Documents
// URI: https://xyzoffice.mycompany.com/_api/Web/Lists(guid'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx')
// 7: Form Templates
// URI: https://xyzoffice.mycompany.com/_api/Web/Lists(guid'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx')
// 8: List Template Gallery
// URI: https://xyzoffice.mycompany.com/_api/Web/Lists(guid'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx')
// 9: Master Page Gallery
// URI: https://xyzoffice.mycompany.com/_api/Web/Lists(guid'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx')
// 10: Notification List
// URI: https://xyzoffice.mycompany.com/_api/Web/Lists(guid'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx')
// 11: Project Policy Item List
// URI: https://xyzoffice.mycompany.com/_api/Web/Lists(guid'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx')
// 12: Quick Deploy Items
// URI: https://xyzoffice.mycompany.com/_api/Web/Lists(guid'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx')
// 13: Relationships List
// URI: https://xyzoffice.mycompany.com/_api/Web/Lists(guid'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx')
// 14: Reusable Content
// URI: https://xyzoffice.mycompany.com/_api/Web/Lists(guid'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx')
// 15: Site Collection Documents
// URI: https://xyzoffice.mycompany.com/_api/Web/Lists(guid'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx')
// 16: Site Collection Images
// URI: https://xyzoffice.mycompany.com/_api/Web/Lists(guid'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx')
// 17: Solution Gallery
// URI: https://xyzoffice.mycompany.com/_api/Web/Lists(guid'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx')
// 18: Style Library
// URI: https://xyzoffice.mycompany.com/_api/Web/Lists(guid'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx')
// 19: Suggested Content Browser Locations
// URI: https://xyzoffice.mycompany.com/_api/Web/Lists(guid'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx')
// 20: Tasks
// URI: https://xyzoffice.mycompany.com/_api/Web/Lists(guid'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx')
// 21: TaxonomyHiddenList
// URI: https://xyzoffice.mycompany.com/_api/Web/Lists(guid'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx')
// 22: Theme Gallery
// URI: https://xyzoffice.mycompany.com/_api/Web/Lists(guid'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx')
// 23: Variation Labels
// URI: https://xyzoffice.mycompany.com/_api/Web/Lists(guid'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx')
// 24: Web Part Gallery
// URI: https://xyzoffice.mycompany.com/_api/Web/Lists(guid'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx')
// 25: wfpub
// URI: https://xyzoffice.mycompany.com/_api/Web/Lists(guid'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx')
// 26: Workflow Tasks
// URI: https://xyzoffice.mycompany.com/_api/Web/Lists(guid'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx')
//
CkHttpW_Dispose(http);
CkStringBuilderW_Dispose(sbJson);
CkJsonObjectW_Dispose(json);
}