2011-07-29 17 views
2

REST APIとCF8を使用してSalesforceとの統合を試みています。 OAuthビットが動作してデータなどが取得されましたが、今ではContactテーブルの一部のレコードを更新しようとしています。CF8とSalesforce REST API - レコードの更新

まず、私は彼らのdocs sayとしてそれを「正しい」やり方をやって取り払わ -

更新HTTPのPATCHを使用してレコードを。

しかし、CFHTTPはPATCHメソッドをサポートしていません。

だから、私はSOQLクエリを実行してみました:

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

しかし、ここで私は

{ "メッセージ" になっている: "予期しないトークン:UPDATE"、 "のerrorCode": "MALFORMED_QUERYを"}

どのようにすればいいですか?

答えて

9

クライアントがサポートしている場合は独自のPATCHメソッドを作成できますが、簡単な方法があります。

あなたは 任意のHTTPメソッド名をオーバーライドや設定はできませんHTTPライブラリを使用する場合は、POSTリクエストを送信し、クエリ文字列を経由してHTTPメソッドに オーバーライドを提供することができます。Force.com REST API Developer's Guideからパラメータ _HttpMethod。 CF9 CFScriptで

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

、Paddyslackerが既にURLに_HttpMethod = PATCHを追加するために提案された方法を使用して:PATCHの例では、オーバーライドを使用しないものとPostMethodライン を置き換えることができます。

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(); 
} 

は、我々はほとんど我々はすぐにオープンソースになるのREST APIのラップと書いたCF9 CFCを持っています。私が帰ってくると、私はそれに戻ってリンクします。

+0

こんにちはダン、皆さんはCFCをオープンソース化しましたか? –

+1

完全なものではありませんが、Gistで整理されたバージョンがあります:https://gist.github.com/danwatt/1827874 –

+0

非常にうれしい、ありがとうございます。 –

関連する問題