Php 如何解析json在Salesforce平台上发表文章?
更新代码后,现在我可以看到错误字符串(148)“[{”errorCode:“APEX_error”,“message:“System.TypeException:从运行时类型列表到映射的转换无效\n\n(BMCServiceDesk)”}]” 只是解释一下:我正在创建一个集成,以便在我的salesforce实例(remedyforce应用程序)中打开一个服务请求 我创建了下面的文件,我有几个错误,并纠正了它,直到我没有给出任何更多的错误,但现在我只能看到无效的转换。也许是因为我的jsonPhp 如何解析json在Salesforce平台上发表文章?,php,arrays,rest,curl,php-curl,Php,Arrays,Rest,Curl,Php Curl,更新代码后,现在我可以看到错误字符串(148)“[{”errorCode:“APEX_error”,“message:“System.TypeException:从运行时类型列表到映射的转换无效\n\n(BMCServiceDesk)”}]” 只是解释一下:我正在创建一个集成,以便在我的salesforce实例(remedyforce应用程序)中打开一个服务请求 我创建了下面的文件,我有几个错误,并纠正了它,直到我没有给出任何更多的错误,但现在我只能看到无效的转换。也许是因为我的json <
<?php
$url = 'https://URL.my.salesforce.com/services/apexrest/BMCServiceDesk/1.0/ServiceRequest/';
$ch = curl_init($url);
$sf_auth = 'Bearer XXXXXX';
$params = array("[
'Fields' => [
0 => [
'Name' => 'requestDefinitionId',
'Value' => 'a3Hf0000000lTNaEAM',
],
1 => [
'Name' => 'client',
'Value' => '0053j00000A7rWLAAZ',
],
],
'Answers' => [
0 => [
'QuestionId' => 'a3Df0000000qI63EAE',
'Values' => [
0 => 'Reclamação',
],
],
1 => [
'QuestionId' => 'a3Df0000000qHvsEAE',
'Values' => [
0 => 'Solicitação de Serviço aberta por qualquer integração web',
],
],
2 => [
'QuestionId' => 'a3Df0000000qHwREAU',
'Values' => [
0 => 'Web',
],
],
],
]");
$data_string = json_encode($params);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Accept: application/json',
'Content-type: application/json',
'Authorization:' . $sf_auth,
));
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($ch, CURLOPT_POSTFIELDS, $data_string);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_TIMEOUT, 5);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 5);
//execute post
$result = curl_exec($ch);
//close connection
curl_close($ch);
$response = curl_exec($ch);
echo curl_errno($ch) . '<br/>';
echo curl_error($ch) . '<br/>';
var_dump($result);
?>
更改后,现在就可以了
如果任何使用Remedyforce的人需要一个基础来开始这种集成,我将留下这段代码
<?php
// Inicia
$url = 'https://MYURL--trnmnto.my.salesforce.com/services/apexrest/BMCServiceDesk/1.0/ServiceRequest/';
$ch = curl_init($url);
$sf_auth = 'Bearer XXXXXXXXX';
$params = ("{\"Fields\":[{\"Name\":\"requestDefinitionId\",\"Value\":\"a3Hf0000000lTNaEAM\"},{\"Name\":\"client\",\"Value\":\"0053j00000A7rWLAAZ\"}],\"Answers\":[{\"QuestionId\":\"a3Df0000000qI63EAE\",\"Values\":[\"Reclama\u00e7\u00e3o\"]},{\"QuestionId\":\"a3Df0000000qHvsEAE\",\"Values\":[\"Solicita\u00e7\u00e3o de Servi\u00e7o aberta por qualquer integra\u00e7\u00e3o web\"]},{\"QuestionId\":\"a3Df0000000qHwREAU\",\"Values\":[\"Web\"]}]}");
$data_string = json_encode($params);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Accept: application/json',
'Content-type: application/json',
'Authorization:' . $sf_auth,
));
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($ch, CURLOPT_POSTFIELDS, $params);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_TIMEOUT, 5);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 5);
//execute post
$result = curl_exec($ch);
//close connection
curl_close($ch);
$response = json_decode(curl_exec($ch), true);
echo $response;
echo curl_errno($ch) . '<br/>';
echo curl_error($ch) . '<br/>';
var_dump($result);
?>
那么您的$params
对象必须与下面的格式相匹配,它目前甚至还没有接近。它实际上必须编码为JSON,这不是http\u build\u query
所做的。我更改了删除http_build_查询并对json数据使用json编码。但是零效果!当然,仅仅是JSON编码(一开始仍然是一种完全不同的数据结构)并不能解决问题。您需要修复$params中的数据结构,以匹配所需JSON的结构。