REST API を介して Salesforce と対話する Wordpress プラグインを作成しました。ユーザー名/パスワードを使用して、インスタンス URL と認証トークンを正常に取得します。
wp_remote_post と GET および POST をそれぞれ使用して、クエリを送信し、オブジェクトを作成できます。
ただし、オブジェクトを作成すると、Salesforce インスタンスで正常に作成されますが、POST への応答として次のようになります。
{"メッセージ":"HTTP メソッド 'POST' は許可されていません。許可されているのは HEAD、GET、PATCH、DELETE です","errorCode":"METHOD_NOT_ALLOWED"}
これらのリクエストと同じ json 本文コンテンツを使用して、Salesforce Workbench を介して問題なく送信および作成できます。次のような適切な応答が得られます。
{ "id": "003E000000OubjkIAB", "成功": true, "エラー": [] }
私が送信しているヘッダーに、Salesforce が部分的にしか同意しないものはありますか? wp_remote_post を使用した結果として送信されるその他の引数を次に示します - http://codex.wordpress.org/HTTP_API#Other_Arguments
これを呼び出しているphpコードは次のとおりです。
$connInfo['access_token'] = get_transient('npsf_access_token');
$connInfo['instance_url'] = get_transient('npsf_instance_url');
$url = $connInfo['instance_url'] . $service;
$sfResponse = wp_remote_post($url, array(
'method' => $method,
'timeout' => 5,
'redirection' => 5,
'httpversion' => 1.0,
'blocking' => true,
'headers' => array("Authorization" => "OAuth ". $connInfo['access_token'], "Content-type" => "application/json"),
'body' => $content,
'cookies' => array()
)
);
$content は、この時点に到達する前に json_encode を介してエンコードされています。
更新: WP_Http_Curl クラスによって送信される追加の CURL オプションの 1 つに固有のものです。Salesforce が問題を抱えているのはどれか、まだ絞り込んでいません。