2013-04-12 22 views
2

我需要使用iContact的API來更新單個聯繫人記錄中的街道地址。iContact API:無法使「updateContact」PHP函數正常工作

的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。

身體要求也看起來不錯:

[{"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":"[email protected]", 
    "createDate":"2013-03-30 21:22:28", 
    "bounceCount":"","status":"normal", 
    "interestedinseo":"1", 
    "wheredoyoulive":"New York" 
    }, 

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

我懷疑是錯誤的API中,但不能發現它。還是我錯過了一些愚蠢的東西?任何想法的人?

回答

6

iContact API期待以這種格式的更新JSON字符串:

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

所以,你需要:

{"street2":"My second address"} 

然而,API包裝在這種格式發送更新數據在函數updateContact()中更改此行:

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

... to th是:

$oContact = $this->makeCall("https://stackoverflow.com/a/{$this->setAccountId()}/c/{$this->setClientFolderId()}/contacts/{$iContactId}", 'POST', $aContact, 'contact'); 
+0

工作就像一個夢 - 謝謝史蒂文! – IanDude