【问题标题】:CF8 and Salesforce REST API - updating recordsCF8 和 Salesforce REST API - 更新记录
【发布时间】:2011-07-29 08:42:25
【问题描述】:

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

首先,我坚持要以他们的docs say 的“正确”方式来做这件事 -

使用 HTTP PATCH 更新记录。

但是 CFHTTP 不支持 PATCH 方法。

然后我尝试运行 SOQL 查询:

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

但在这里我得到了

{"message":"unexpected token: UPDATE","errorCode":"MALFORMED_QUERY"}

有人知道怎么做吗?

【问题讨论】:

    标签: coldfusion salesforce


    【解决方案1】:

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

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

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

    【讨论】:

      【解决方案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。当我们这样做时,我会回来并链接到它。

      【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-03-04
      • 2020-02-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多