3

我正在使用 Adob​​e AIR 并通过 REST API 与 force.com 平台集成,到目前为止,它的进展相对顺利,但我在使用该DELETE方法时遇到了困难。

文档很简单:

删除客户记录

使用 DELETE 方法删除一条记录。在此示例中,删除了客户记录。

删除 Account 对象中的字段的示例用法

curl https://instancename.salesforce.com/services/data/v20.0/sobjects/Account/001D000000INjVe -H“授权:承载令牌”-H“X-PrettyPrint:1”-X DELETE

删除客户记录的示例请求正文

不需要

用于删除客户记录的示例响应正文

没有返回

我的代码如下,注意第二个参数HTTPConnection.send()是调用的方法。

var headers:Object = new Object();
headers["Authorization"] = "Bearer "+ConnectionAccessToken;
var url:String = ConnectionInstanceURL + "/services/data/v"+_apiVersionNumber+"/sobjects/"+type+"/"+id;

var response:RESTResponse = new RESTResponse(callback);
var httpCallback:IResponder = new mx.rpc.Responder(response.resultHandler,response.faultHandler);

HTTPConnection.send(headers,"DELETE",url,httpCallback);

类似的代码非常适合其他操作,奇怪的是这本身并没有失败,而是收到了成功的响应,但是将有问题的记录连同它的所有字段一起返回。看来我看到了 的结果[select * from Object where Id = <id>,只是为了澄清记录没有被删除。该对象没有任何主细节关系,所以我不确定还有什么可能阻止这种删除发生 - 有没有人遇到过这种情况或有关于如何解决它的建议?

4

1 回答 1

3

通过我正在使用的设置(其中 HTTPConnection 是在内部使用 HTTPService 的自定义类),Adobe 文档指出可供我使用的唯一 HTTP 方法只是 GET 和 POST:

"可选地,您可以将参数传递给指定的 URL。当您不通过基于服务器的代理服务时,您只能使用 HTTP GET 或 POST 方法。但是,当您将 useProxy 属性设置为 true 并使用服务器时基于代理服务,您还可以使用 HTTP HEAD、OPTIONS、TRACE 和 DELETE 方法。”

这就是删除失败的原因,因为它必须按照上面jkraybill的评论作为 GET 发送。经过实验,我发现可以使用 POST,并将调用的实际方法作为 URL 的参数包含在内:

HTTPConnection.send(headers,"POST",url + "?_HttpMethod=DELETE",httpCallback);
于 2012-07-31T05:08:10.233 回答