CF8 和 Salesforce REST API - 更新记录

发布于 2024-11-27 07:37:37 字数 591 浏览 0 评论 0原文

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

首先,我坚持以“正确”的方式进行操作,正如他们的 文档所说 -

使用 HTTP PATCH 更新记录。

但CFHTTP不支持PATCH方法。

然后我尝试运行 SOQL 查询:

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

但在这里我得到了

{"message":"意外的令牌:UPDATE","errorCode":"MALFORMED_QUERY"}

有谁知道如何做到这一点?

I'm trying to do integration with Salesforce using their REST API and CF8.
I got the OAuth bit working, getting data etc but now I'm trying to update some records in Contact table.

First I tought about doing it the "proper" way as their docs say -

Update a record using HTTP PATCH.

But CFHTTP doesn't support PATCH method.

So then I tried running a SOQL query:

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

but here I'm getting

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

Does anyone have an idea how to do it?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

清风无影 2024-12-04 07:37:37

如果您的客户端支持,您可以创建自己的 PATCH 方法,但有一种更简单的方法。来自 Force.com REST API 开发人员指南

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

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

You can create your own PATCH method if your client supports it, but there is an easier way. From the Force.com REST API Developer's Guide:

If you use an HTTP library that doesn't allow overriding or setting an
arbitrary HTTP method name, you can send a POST request and provide an
override to the HTTP method via the query string parameter
_HttpMethod. In the PATCH example, you can replace the PostMethod line
with one that doesn't use override:

PostMethod m = new PostMethod(url + "?_HttpMethod=PATCH");
流年里的时光 2024-12-04 07:37:37

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

In CF9 CFScript, using the method that Paddyslacker already suggested for adding _HttpMethod=PATCH to the 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();
}

We have a CF9 CFC that we wrote that wraps most of the REST API that we will be open sourcing soon. I'll come back and link to it when we do.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文