Sample code for 30+ languages & platforms
Xbase++

Outlook List Contacts

See more Outlook Contact Examples

List Outlook Contacts

Chilkat Xbase++ Downloads

Xbase++
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()