我正在尝试使用他们的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”}
有没有人知道该怎么做?
答案 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。当我们这样做时,我会回来并链接到它。