我在命令行方面有问题。我必须使用 -d '{"name": "YourCompanyName", "time_zone":"Pacific Time (US & Canada)"}'
在php curl.I
不明白该怎么做。我认为这意味着 php curl 中的数据,所以我使用了这个CURLOPT_POSTFIELDS
.Bu 仍然我收到此错误
"错误":"缺少必需参数'name'"
$api_url = 'api.callrail.com/v1/companies.json';;
$fields = array('name'=>'BobsAutoShop','time_zone'=>'Pasific Time (US & Canada)');
$ch = curl_init($api_url);
//print_r(curl_getinfo($ch)) ;
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
//curl_setopt($ch,CURLOPT_POST, $fields_string);
curl_setopt($ch,CURLOPT_POSTFIELDS, $fields_string);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array("Authorization: Token token='"{$api_key}'"","Content-Type: application/json"));
我认为数据应该是json格式,所以请按如下方式转换json格式的帖子数据。
$api_url = 'api.callrail.com/v1/companies.json';
$fields = json_encode(array('name'=>'BobsAutoShop','time_zone'=>'Pasific Time (US & Canada)'));
$ch = curl_init($api_url); //print_r(curl_getinfo($ch)) ;
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch,CURLOPT_POSTFIELDS, $fields_string);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array("Authorization: Token token='"{$api_key}'"","Content-Type: application/json"));
首先,
你在代码中传递了错误的变量:
curl_setopt($ch,CURLOPT_POSTFIELDS, $fields_string);
未定义$fields_string
的地方。
在 POST 正文中发送之前,您必须在$fields
上调用json_encode
。连同修复未定义的$fields_string
,这看起来像:
$fields_string = json_encode($fields);