2011-07-29 56 views
2

我正在嘗試使用其REST API和CF8與Salesforce進行集成。 我得到了OAuth位工作,獲取數據等,但現在我試圖更新聯繫人表中的一些記錄。CF8和Salesforce REST API - 更新記錄

首先,我因子評分關於做「正確」的方式爲自己的docs say -

更新使用HTTP PATCH的記錄。

但CFHTTP不支持PATCH方法。

於是我試着運行SOQL查詢:

UPDATE Contact SET MailingStreet = 'Blah Blah' WHERE Id = '003A000000Zp4ObIAJ' 

但在這裏我得到

{ 「消息」: 「意外的標記:UPDATE」, 「錯誤碼」:「MALFORMED_QUERY 「}

有沒有人有一個想法如何做到這一點?

回答

9

如果您的客戶端支持它,您可以創建自己的PATCH方法,但有一種更簡單的方法。從Force.com REST API Developer's Guide

如果您使用的HTTP庫,不允許覆蓋或設置 任意HTTP方法的名稱,你可以發送POST請求,並通過查詢字符串提供 覆蓋的HTTP方法參數 _HttpMethod。在補丁例如,你可以用一個不使用替代更換的PostMethod線 :

PostMethod m = new PostMethod(url + "?_HttpMethod=PATCH"); 
2

在CF9 CFSCRIPT,使用Paddyslacker已經建議添加_HttpMethod =補丁的URL的方法:

private boolean function patchObject(required string sfid, required string type, required struct obj) { 
    local.url = variables.salesforceInstance & '/services/data/v' & variables.apiVersion &'/sobjects/' & arguments.type & '/' & arguments.sfid &'?_HttpMethod=PATCH'; 
    local.http = new Http(url=local.url,method='post'); 
    //... convert obj to a json string, add to local.http ... 
    local.httpSendResult = local.http.send().getPrefix(); 
} 

我們寫了一個CF9 CFC,它包裝了大部分REST API,我們將很快開放採購。我們會回來並鏈接到它。

+0

嗨Dan,你們有沒有開源你的CFC? –

+1

不是完整的東西,但我們確實在Gist中有一個修剪版本:https://gist.github.com/danwatt/1827874 –

+0

非常酷,謝謝你。 –