Sample code for 30+ languages & platforms
Perl

Outlook List Contacts

See more Outlook Contact Examples

List Outlook Contacts

Chilkat Perl Downloads

Perl
use chilkat();

$success = 0;

# This example requires the Chilkat API to have been previously unlocked.
# See Global Unlock Sample for sample code.

$http = chilkat::CkHttp->new();

# Use your previously obtained access token here: Get Outlook Contacts OAuth2 Access Token (Azure AD v2.0 Endpoint).

$jsonToken = chilkat::CkJsonObject->new();
$success = $jsonToken->LoadFile("qa_data/tokens/outlookContacts.json");
if ($success == 0) {
    print $jsonToken->lastErrorText() . "\r\n";
    exit;
}

$http->put_AuthToken($jsonToken->stringOf("access_token"));

# Send the following GET:

# GET https://graph.microsoft.com/v1.0/me/contacts
$sbJson = chilkat::CkStringBuilder->new();
$success = $http->QuickGetSb("https://graph.microsoft.com/v1.0/me/contacts",$sbJson);
if ($success == 0) {
    print $http->lastErrorText() . "\r\n";
    exit;
}

$statusCode = $http->get_LastStatus();
print "Response status code = " . $statusCode . "\r\n";

if ($statusCode != 200) {
    print $sbJson->getAsString() . "\r\n";
    print "Failed." . "\r\n";
    exit;
}

$jResp = chilkat::CkJsonObject->new();
$jResp->LoadSb($sbJson);
$jResp->put_EmitCompact(0);
print $jResp->emit() . "\r\n";

# 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": {}
#     },
# ...
#   ]
# }

$odata_context = $jResp->stringOf('\'@odata.context\'');
$i = 0;
$count_i = $jResp->SizeOfArray("value");
while ($i < $count_i) {
    $jResp->put_I($i);
    $odata_etag = $jResp->stringOf('value[i].\'@odata.etag\'');
    $id = $jResp->stringOf("value[i].id");
    $createdDateTime = $jResp->stringOf("value[i].createdDateTime");
    $lastModifiedDateTime = $jResp->stringOf("value[i].lastModifiedDateTime");
    $changeKey = $jResp->stringOf("value[i].changeKey");
    $parentFolderId = $jResp->stringOf("value[i].parentFolderId");
    $birthday = $jResp->stringOf("value[i].birthday");
    $fileAs = $jResp->stringOf("value[i].fileAs");
    $displayName = $jResp->stringOf("value[i].displayName");
    $givenName = $jResp->stringOf("value[i].givenName");
    $initials = $jResp->stringOf("value[i].initials");
    $middleName = $jResp->stringOf("value[i].middleName");
    $nickName = $jResp->stringOf("value[i].nickName");
    $surname = $jResp->stringOf("value[i].surname");
    $title = $jResp->stringOf("value[i].title");
    $yomiGivenName = $jResp->stringOf("value[i].yomiGivenName");
    $yomiSurname = $jResp->stringOf("value[i].yomiSurname");
    $yomiCompanyName = $jResp->stringOf("value[i].yomiCompanyName");
    $generation = $jResp->stringOf("value[i].generation");
    $jobTitle = $jResp->stringOf("value[i].jobTitle");
    $companyName = $jResp->stringOf("value[i].companyName");
    $department = $jResp->stringOf("value[i].department");
    $officeLocation = $jResp->stringOf("value[i].officeLocation");
    $profession = $jResp->stringOf("value[i].profession");
    $businessHomePage = $jResp->stringOf("value[i].businessHomePage");
    $assistantName = $jResp->stringOf("value[i].assistantName");
    $manager = $jResp->stringOf("value[i].manager");
    $mobilePhone = $jResp->stringOf("value[i].mobilePhone");
    $spouseName = $jResp->stringOf("value[i].spouseName");
    $personalNotes = $jResp->stringOf("value[i].personalNotes");
    $j = 0;
    $count_j = $jResp->SizeOfArray("value[i].categories");
    while ($j < $count_j) {
        $jResp->put_J($j);
        $j = $j + 1;
    }

    $j = 0;
    $count_j = $jResp->SizeOfArray("value[i].imAddresses");
    while ($j < $count_j) {
        $jResp->put_J($j);
        $j = $j + 1;
    }

    $j = 0;
    $count_j = $jResp->SizeOfArray("value[i].homePhones");
    while ($j < $count_j) {
        $jResp->put_J($j);
        $j = $j + 1;
    }

    $j = 0;
    $count_j = $jResp->SizeOfArray("value[i].businessPhones");
    while ($j < $count_j) {
        $jResp->put_J($j);
        $strVal = $jResp->stringOf("value[i].businessPhones[j]");
        $j = $j + 1;
    }

    $j = 0;
    $count_j = $jResp->SizeOfArray("value[i].children");
    while ($j < $count_j) {
        $jResp->put_J($j);
        $j = $j + 1;
    }

    $j = 0;
    $count_j = $jResp->SizeOfArray("value[i].emailAddresses");
    while ($j < $count_j) {
        $jResp->put_J($j);
        $name = $jResp->stringOf("value[i].emailAddresses[j].name");
        $address = $jResp->stringOf("value[i].emailAddresses[j].address");
        $j = $j + 1;
    }

    $i = $i + 1;
}