2

我需要使用 iContact 的 API 来更新单个联系人记录中的街道地址。

API 在这里:https ://github.com/icontact/icontact-api-php

具体来说,我想更新street2.

在 API 中,有一个“updateContact”函数,它接受 15 个参数。这是一个例子:

updateContact($currentContactId, null, null, null, null, null, null,'My second address', null, null, null, null, null, null, null);

API 会构建 URI,这样就可以了。它还将其设置为 POST(也可以;这就是 API 更新联系人所需的内容)。

以下是 API 构建的 URI 示例:

https://app.sandbox.icontact.com/icp/a/913463/c/133578/contacts/67295434

最后一位数字67295434是联系人的唯一 ID。

BODY 请求看起来也不错:

[{"street2":"My second address"}]

但是curl_exec我得到之后的 JSON 响应是这样的:

  {"contact":
    {
    "contactId":"67295434",
    "prefix":"Mr.",
    "firstName":"Joe",
    "lastName":"Williams",
    "suffix":"Jr.",
    "street":"2365 Meridian Parkway",
    "street2":"",
    "city":"Durham",
    "state":"NC",
    "postalCode":"27713",
    "phone":"8668039462",
    "fax":"",
    "business":"iContact",
    "email":"joewilliams@icontact.com",
    "createDate":"2013-03-30 21:22:28",
    "bounceCount":"","status":"normal",
    "interestedinseo":"1",
    "wheredoyoulive":"New York"
    },

    "warnings":["Invalid field: 0"]
  }

我怀疑 API 中存在错误,但无法发现。还是我错过了一些愚蠢的东西?有什么想法吗?

4

1 回答 1

6

iContact API需要采用以下格式的更新 JSON 字符串:

{"street2":"My second address"}  

但是,API 包装器以这种格式发送更新数据:

[{"street2":"My second address"}]  

因此,您需要在函数 updateContact() 中更改这一行:

$oContact = $this->makeCall("/a/{$this->setAccountId()}/c/{$this->setClientFolderId()}/contacts/{$iContactId}", 'POST', array($aContact), 'contact');  

...对此:

$oContact = $this->makeCall("/a/{$this->setAccountId()}/c/{$this->setClientFolderId()}/contacts/{$iContactId}", 'POST', $aContact, 'contact');
于 2013-04-14T11:57:20.613 回答