如何在php中使用curl创建API服务的客户?

如何在php中使用curl创建API服务的客户?,php,curl,Php,Curl,我通过这篇文章成功地列出了所有客户数据 我正在尝试使用以下php使用API服务创建客户: $url = 'https://api.wlvpn.com/v2/customers'; $postData = array("cust_user_id" => "Jai Lalawat","cust_password" => "12345678","acct_group_id" => 515); $ch = curl_init(); curl_setopt($ch, CURLOPT_

我通过这篇文章成功地列出了所有客户数据

我正在尝试使用以下php使用API服务创建客户:
$url = 'https://api.wlvpn.com/v2/customers';
$postData = array("cust_user_id"  => "Jai Lalawat","cust_password" => "12345678","acct_group_id" => 515);
$ch = curl_init();

curl_setopt($ch, CURLOPT_POST, 1);#for post request
curl_setopt($ch, CURLOPT_HEADER, 'Content-Type: application/json');#for header
curl_setopt($ch, CURLOPT_USERPWD, "api-key:my-api-key");#for -u option authentication
curl_setopt($ch, CURLOPT_POST, count($postData));#count post data
curl_setopt($ch, CURLOPT_POSTFIELDS, $postData); #send post request data
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_SSLVERSION, 3);


$output = curl_exec($ch);
$curl_error = curl_error($ch);
curl_close($ch);

print_r($output);
print_r($curl_error);
?>
但是我犯了以下错误

{"api_status":0,"error":"Invalid account group"}
但是,当我在ubuntu的命令行中运行以下命令时:

curl -X POST -H 'Content-Type: application/json' -u api-key:my-api-key -d '{"cust_user_id":"jaitest","cust_password":"12345678","acct_group_id":"515"}' https://api.wlvpn.com/v2/customers
我得到了预期的答复


任何人都可以帮助我这里缺少什么。

在您的CLI示例中,您正在向API传递JSON数据。您正在PHP示例中提供表单数据

您需要以JSON的形式传递数据,如本例所示:

<?php

$url = 'https://api.wlvpn.com/v2/customers';
$postData = array("cust_user_id"  => "Jai Lalawat","cust_password" => "12345678","acct_group_id" => 515);

$body = json_encode($postData);

$ch = curl_init($url);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($ch, CURLOPT_POSTFIELDS, $body);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
    'Content-Type: application/json',
    'Content-Length: ' . strlen($body)
));

$result = curl_exec($ch);

它们不是同一个帐户组。在PHP示例中有517,在命令行示例中有515任何客户都有相同的帐户组都是不同的帐户组,并且该组是存在的。从外观上看,命令行中有一个提交json数据的帐户组,而PHP中有一个发送post数据的帐户组。在命令行中,它是标头,当您看到所有命令时,它是post请求,而不是get请求