我使用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');
部分?
感谢。
答案 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');