Xbase++
Xbase++
Outlook List Contacts
See more Outlook Contact Examples
List Outlook ContactsChilkat Xbase++ Downloads
LOCAL nSuccess
LOCAL oHttp
LOCAL oJsonToken
LOCAL oSbJson
LOCAL nStatusCode
LOCAL oJResp
LOCAL cOdata_etag
LOCAL cId
LOCAL cCreatedDateTime
LOCAL cLastModifiedDateTime
LOCAL cChangeKey
LOCAL cParentFolderId
LOCAL cBirthday
LOCAL cFileAs
LOCAL cDisplayName
LOCAL cGivenName
LOCAL cInitials
LOCAL cMiddleName
LOCAL cNickName
LOCAL cSurname
LOCAL cTitle
LOCAL cYomiGivenName
LOCAL cYomiSurname
LOCAL cYomiCompanyName
LOCAL cGeneration
LOCAL cJobTitle
LOCAL cCompanyName
LOCAL cDepartment
LOCAL cOfficeLocation
LOCAL cProfession
LOCAL cBusinessHomePage
LOCAL cAssistantName
LOCAL cManager
LOCAL cMobilePhone
LOCAL cSpouseName
LOCAL cPersonalNotes
LOCAL j
LOCAL nCount_j
LOCAL cStrVal
LOCAL cName
LOCAL cAddress
LOCAL cOdata_context
LOCAL i
LOCAL nCount_i
nSuccess := 0
// This example requires the Chilkat API to have been previously unlocked.
// See Global Unlock Sample for sample code.
oHttp := CreateObject("Chilkat.Http")
// Use your previously obtained access token here: Get Outlook Contacts OAuth2 Access Token (Azure AD v2.0 Endpoint).
oJsonToken := CreateObject("Chilkat.JsonObject")
nSuccess := oJsonToken:LoadFile("qa_data/tokens/outlookContacts.json")
IF (nSuccess == 0)
? oJsonToken:LastErrorText
oHttp:destroy()
oJsonToken:destroy()
RETURN
ENDIF
oHttp:AuthToken := oJsonToken:StringOf("access_token")
// Send the following GET:
// GET https://graph.microsoft.com/v1.0/me/contacts
oSbJson := CreateObject("Chilkat.StringBuilder")
nSuccess := oHttp:QuickGetSb("https://graph.microsoft.com/v1.0/me/contacts", oSbJson)
IF (nSuccess == 0)
? oHttp:LastErrorText
oHttp:destroy()
oJsonToken:destroy()
oSbJson:destroy()
RETURN
ENDIF
nStatusCode := oHttp:LastStatus
? "Response status code = " + Str(nStatusCode)
IF (nStatusCode != 200)
? oSbJson:GetAsString()
? "Failed."
oHttp:destroy()
oJsonToken:destroy()
oSbJson:destroy()
RETURN
ENDIF
oJResp := CreateObject("Chilkat.JsonObject")
oJResp:LoadSb(oSbJson)
oJResp:EmitCompact := 0
? oJResp:Emit()
// Sample output:
// Use this online tool to generate parsing code from sample JSON:
// Generate Parsing Code from JSON
// {
// "@odata.context": "https://graph.microsoft.com/v1.0/$metadata#users('4ee732c3-322e-4a6b-b729-2fd1eb5c6004')/contacts",
// "value": [
// {
// "@odata.etag": "W/\"EQAAABYAAABUcG0qWqkmQYqWLHQataQxAAD0iYfT\"",
// "id": "AAMkADYzZWE3YmZmLWU0YzgtNGNkZC04MGE1LWFiYTFlNTRlY2QwYQBGAAAAAAAu7cUXL5YOTrdsUIw7-v8FBwBUcG0qWqkmQYqWLHQataQxAAAAAAEOAABUcG0qWqkmQYqWLHQataQxAAD0sxexAAA=",
// "createdDateTime": "2021-06-29T16:32:05Z",
// "lastModifiedDateTime": "2021-06-29T16:32:06Z",
// "changeKey": "EQAAABYAAABUcG0qWqkmQYqWLHQataQxAAD0iYfT",
// "categories": [
// ],
// "parentFolderId": "AAMkADYzZWE3YmZmLWU0YzgtNGNkZC04MGE1LWFiYTFlNTRlY2QwYQAuAAAAAAAu7cUXL5YOTrdsUIw7-v8FAQBUcG0qWqkmQYqWLHQataQxAAAAAAEOAAA=",
// "birthday": null,
// "fileAs": "",
// "displayName": "Pavel Bansky",
// "givenName": "Pavel",
// "initials": null,
// "middleName": null,
// "nickName": null,
// "surname": "Bansky",
// "title": null,
// "yomiGivenName": null,
// "yomiSurname": null,
// "yomiCompanyName": null,
// "generation": null,
// "imAddresses": [
// ],
// "jobTitle": null,
// "companyName": null,
// "department": null,
// "officeLocation": null,
// "profession": null,
// "businessHomePage": null,
// "assistantName": null,
// "manager": null,
// "homePhones": [
// ],
// "mobilePhone": null,
// "businessPhones": [
// "+1 732 555 0102"
// ],
// "spouseName": null,
// "personalNotes": "",
// "children": [
// ],
// "emailAddresses": [
// {
// "name": "Pavel Bansky",
// "address": "pavelb@fabrikam.onmicrosoft.com"
// }
// ],
// "homeAddress": {},
// "businessAddress": {},
// "otherAddress": {}
// },
// ...
// ]
// }
cOdata_context := oJResp:StringOf('"@odata.context"')
i := 0
nCount_i := oJResp:SizeOfArray("value")
DO WHILE i < nCount_i
oJResp:I := i
cOdata_etag := oJResp:StringOf('value[i]."@odata.etag"')
cId := oJResp:StringOf("value[i].id")
cCreatedDateTime := oJResp:StringOf("value[i].createdDateTime")
cLastModifiedDateTime := oJResp:StringOf("value[i].lastModifiedDateTime")
cChangeKey := oJResp:StringOf("value[i].changeKey")
cParentFolderId := oJResp:StringOf("value[i].parentFolderId")
cBirthday := oJResp:StringOf("value[i].birthday")
cFileAs := oJResp:StringOf("value[i].fileAs")
cDisplayName := oJResp:StringOf("value[i].displayName")
cGivenName := oJResp:StringOf("value[i].givenName")
cInitials := oJResp:StringOf("value[i].initials")
cMiddleName := oJResp:StringOf("value[i].middleName")
cNickName := oJResp:StringOf("value[i].nickName")
cSurname := oJResp:StringOf("value[i].surname")
cTitle := oJResp:StringOf("value[i].title")
cYomiGivenName := oJResp:StringOf("value[i].yomiGivenName")
cYomiSurname := oJResp:StringOf("value[i].yomiSurname")
cYomiCompanyName := oJResp:StringOf("value[i].yomiCompanyName")
cGeneration := oJResp:StringOf("value[i].generation")
cJobTitle := oJResp:StringOf("value[i].jobTitle")
cCompanyName := oJResp:StringOf("value[i].companyName")
cDepartment := oJResp:StringOf("value[i].department")
cOfficeLocation := oJResp:StringOf("value[i].officeLocation")
cProfession := oJResp:StringOf("value[i].profession")
cBusinessHomePage := oJResp:StringOf("value[i].businessHomePage")
cAssistantName := oJResp:StringOf("value[i].assistantName")
cManager := oJResp:StringOf("value[i].manager")
cMobilePhone := oJResp:StringOf("value[i].mobilePhone")
cSpouseName := oJResp:StringOf("value[i].spouseName")
cPersonalNotes := oJResp:StringOf("value[i].personalNotes")
j := 0
nCount_j := oJResp:SizeOfArray("value[i].categories")
DO WHILE j < nCount_j
oJResp:J := j
j := j + 1
ENDDO
j := 0
nCount_j := oJResp:SizeOfArray("value[i].imAddresses")
DO WHILE j < nCount_j
oJResp:J := j
j := j + 1
ENDDO
j := 0
nCount_j := oJResp:SizeOfArray("value[i].homePhones")
DO WHILE j < nCount_j
oJResp:J := j
j := j + 1
ENDDO
j := 0
nCount_j := oJResp:SizeOfArray("value[i].businessPhones")
DO WHILE j < nCount_j
oJResp:J := j
cStrVal := oJResp:StringOf("value[i].businessPhones[j]")
j := j + 1
ENDDO
j := 0
nCount_j := oJResp:SizeOfArray("value[i].children")
DO WHILE j < nCount_j
oJResp:J := j
j := j + 1
ENDDO
j := 0
nCount_j := oJResp:SizeOfArray("value[i].emailAddresses")
DO WHILE j < nCount_j
oJResp:J := j
cName := oJResp:StringOf("value[i].emailAddresses[j].name")
cAddress := oJResp:StringOf("value[i].emailAddresses[j].address")
j := j + 1
ENDDO
i := i + 1
ENDDO
oHttp:destroy()
oJsonToken:destroy()
oSbJson:destroy()
oJResp:destroy()