CF8和Salesforce REST API - 更新记录

时间:2011-07-29 08:42:25

标签: coldfusion salesforce

我正在尝试使用他们的REST API和CF8与Salesforce进行集成。 我让OAuth位工作,获取数据等但现在我正在尝试更新Contact表中的一些记录。

首先,我认为这是以docs say -

的“正确”方式进行的
  

使用HTTP PATCH更新记录。

但CFHTTP不支持PATCH方法。

然后我尝试运行SOQL查询:

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

但是我来了

  

{“message”:“意外令牌:UPDATE”,“errorCode”:“MALFORMED_QUERY”}

有没有人知道该怎么做?

2 个答案:

答案 0 :(得分:9)

如果您的客户支持,您可以创建自己的PATCH方法,但有一种更简单的方法。来自Force.com REST API Developer's Guide

  

如果您使用的HTTP库不允许覆盖或设置   任意HTTP方法名称,您可以发送POST请求并提供   通过查询字符串参数覆盖HTTP方法   _HttpMethod。在PATCH示例中,您可以替换PostMethod行   一个不使用覆盖:

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

答案 1 :(得分:2)

在CF9 CFScript中,使用Paddyslacker已建议将_HttpMethod = PATCH添加到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。当我们这样做时,我会回来并链接到它。