3

私は Adob​​e AIR を使用しており、REST API を介して force.com プラットフォームと統合しています。これまでのところ、比較的順調に進んでいますが、このDELETE方法を使用することに行き詰まりを感じています。

ドキュメントは十分に単純です。

アカウント レコードの削除

レコードを削除するには、DELETE メソッドを使用します。この例では、Account レコードが削除されます。

Account オブジェクトの項目を削除する使用例

curl https://instancename.salesforce.com/services/data/v20.0/sobjects/Account/001D000000INjVe -H "Authorization: Bearer token " -H "X-PrettyPrint:1" -X DELETE

Account レコードを削除するためのリクエスト本文の例

不要

Account レコードを削除するためのレスポンス本文の例

何も返されませんでした

HTTPConnection.send()私のコードは以下のとおりです。 の 2 番目のパラメーターは呼び出すメソッドであることに注意してください。

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 を使用するカスタム クラス) では、アドビのドキュメントには、使用できる 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 に答える