我需要使用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"]
}
Run Code Online (Sandbox Code Playgroud)
我怀疑API中有一个错误但无法发现它.或者我错过了一些愚蠢的东西?任何人的想法?
该IContact接口API期待以这种格式的更新JSON字符串:
{"street2":"My second address"}
Run Code Online (Sandbox Code Playgroud)
但是,API包装器以这种格式发送更新数据:
[{"street2":"My second address"}]
Run Code Online (Sandbox Code Playgroud)
因此,您需要在函数updateContact()中更改此行:
$oContact = $this->makeCall("/a/{$this->setAccountId()}/c/{$this->setClientFolderId()}/contacts/{$iContactId}", 'POST', array($aContact), 'contact');
Run Code Online (Sandbox Code Playgroud)
......对此:
$oContact = $this->makeCall("/a/{$this->setAccountId()}/c/{$this->setClientFolderId()}/contacts/{$iContactId}", 'POST', $aContact, 'contact');
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
508 次 |
| 最近记录: |