如何在PHP中创建此Salesforce cURL请求?

时间:2017-09-11 21:05:10

标签: php rest curl salesforce

我使用PHP向Salesforce的REST API发出cURL请求 我已经获得了需要解决的大部分请求,但我不确定如何将以下Salesforce API页面上的以下<?php $user_id = get_current_user_id(); ?> <?php if(isset($_POST['value'])) { update_user_meta( $user_id, '_meta_value_val', $_POST['value'] ); } ?> <form method="POST" action="" id="val_edit"> <input type="text" value="44" name="value"> <button value="done" type="submit" form="val_edit">invia</button </form> 命令转换为PHP中的cURL请求:< / p>

curl

https://developer.salesforce.com/docs/atlas.en-us.api_rest.meta/api_rest/dome_upsert.htm

我知道curl https://yourInstance.salesforce.com/services/data/v20.0/sobjects/Account/customExtIdField__c/11999 -H "Authorization: Bearer token" -H "Content-Type: application/json" -d @newrecord.json -X PATCH 选项适用于标题,我将使用以下内容进行处理:

-H

认为可以使用以下PHP cURL选项完成curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); 部分:

-X PATCH

但是,如何处理PHP cURL中的curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'PATCH'); 部分?
感谢。

2 个答案:

答案 0 :(得分:1)

你应该发布json

$post = json_encode($data);

curl_setopt($ch, CURLOPT_POSTFIELDS,$post);

答案 1 :(得分:1)

您正在使用-d @newrecord.json上传的(JSON)文件供端点使用。要在PHP中复制它,您需要将带有file元素的数组传递给CUROPT_POSTFIELDS,如下所示:

$file = [
    "file" => "@newrecord.json";
];
curl_setopt($ch, CURLOPT_POSTFIELDS, $file);

确保提供正确的文件路径。您可以使用realpath()来帮助解决此问题。

或者,您可以发送JSON编码数据:

$data = [
    "site" => "Stack Overflow",
    "help" => true,
];
$jsonData = json_encode($data);
curl_setopt($ch, CURLOPT_POSTFIELDS, $jsonData);

不要忘记设置Content-Type: application/json标题!

最后,您对PATCH请求的猜测是正确的:

curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'PATCH');