如何使用 php curl 代替命令提示符


How to use php curl in place of command prompt

我在命令行方面有问题。我必须使用 -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);