我编写了一个通过 REST API 与 Salesforce 交互的 Wordpress 插件。它使用用户名/密码成功获取实例 URL 和身份验证令牌。
我可以分别使用 wp_remote_post 和 GET 和 POST 提交查询和创建对象。
然而,在创建对象时,虽然在 Salesforce 实例中成功创建,但我得到以下响应我的 POST:
{"message":"HTTP 方法 'POST' 不允许。允许的是 HEAD,GET,PATCH,DELETE","errorCode":"METHOD_NOT_ALLOWED"}
使用来自这些请求的相同 json 正文内容,我可以毫无问题地通过 Salesforce Workbench 提交和创建。我得到一个如下所示的正确响应:
{“id”:“003E000000OubjkIAB”,“成功”:真,“错误”:[]}
我发送的标头中是否有 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 选项之一。我还没有确定哪一个 Salesforce 存在问题。