我正在尝试将REST闪电API用于Salesforce。到目前为止,我可以使它成功连接并获得某些信息,但是我一直在努力使其实际创建新记录。下面是代码,我排除了连接代码并获得了Bearer令牌,因为这两种代码都可以正常工作,并且不会影响创建记录的后半部分。
<?php
$url = $instance_url.'/services/data/v20.0/sobjects/Account/';
$headers = array(
'Content-Type: application/json'
);
$data = array(
'Name' => "AccountHEX"
);
$ch2 = curl_init();
curl_setopt($ch2,CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch2,CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch2,CURLOPT_RETURNTRANSFER, true);
$head = 'Authorization: Bearer '.$access_token;
curl_setopt($ch2, CURLOPT_HTTPHEADER, array($head));
//execute post
$result = null;
$result = curl_exec($ch2);
echo $result;
?>
我得到的结果似乎只是帐户对象上的信息:
{
"objectDescribe":{
"activateable":false,
"createable":true,
"custom":false,
"customSetting":false,
"deletable":true,
"deprecatedAndHidden":false,
"feedEnabled":true,
"keyPrefix":"001",
"label":"Account",
"labelPlural":"Accounts",
"layoutable":true,
"mergeable":true,
"name":"Account",
"queryable":true,
"replicateable":true,
"retrieveable":true,
"searchable":true,
"triggerable":true,
"undeletable":true,
"updateable":true,
"urls":{
"rowTemplate":"/services/data/v20.0/sobjects/Account/{ID}",
"describe":"/services/data/v20.0/sobjects/Account/describe",
"sobject":"/services/data/v20.0/sobjects/Account"
}
},
"recentItems":[
]
}
因此,它更多地将其视为查询而不是创建。我尝试了几种不同的$ data安排。包括立即进行命名,并将其放入字段数组中。
为此而努力:
https://developer.salesforce.com/docs/atlas.en-us.api_rest.meta/api_rest/dome_sobject_create.htm
有什么想法如何创建记录吗?
答案 0 :(得分:0)
您收到的是Account sObject describe,它是GET
请求的返回值。您需要发出POST
请求才能创建sObject。
您的身体数据不需要嵌套在fields
键中。您的JSON应该类似于文档中的示例
{
"Name" : "Express Logistics and Transport"
}
所有字段都位于顶层。
最后,API v20.0太旧了。我建议您在端点URL v46.0中声明最新的API版本。使用旧的API版本可能会导致异常行为,并且某些字段对您不可用。