繁体   English   中英

如何在PHP中提出此Salesforce cURL请求?

[英]How do I make this Salesforce cURL request in PHP?

我正在使用PHP向Salesforce的REST API发出cURL请求。
我已经弄清了大部分需要解决的请求,但是我不确定如何将以下Salesforce API页面上的以下curl命令转换为PHP中的cURL请求:

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

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

我知道-H选项用于标题,我将处理以下内容:

curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);

而且我认为 -X PATCH部分可以通过以下PHP cURL选项完成:

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

但是,如何处理PHP cURL中的-d @newrecord.json部分?
谢谢。

您应该发布json

$post = json_encode($data);

curl_setopt($ch, CURLOPT_POSTFIELDS,$post);

您使用-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');

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM