curl post请求后的错误请求

时间:2021-04-11 17:14:30

标签: php curl

我想使用这个 api:https://www.etermin.net/api/index.html#api-Calendar-Get

对于这个 I API 部分,我有以下代码:

$cURL = curl_init();
curl_setopt($cURL, CURLOPT_URL, 'https://www.etermin.net/api/calendar?ublickey='.$publicKey.'&salt='.$salt.'&signature='.$encodedSignature.'');
curl_setopt($cURL, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($cURL);
curl_close($cURL);

此代码工作正常!

现在我想用这个 api 创建一个约会:https://www.etermin.net/api/index.html#api-Appointment-Create

现在我需要一个发布请求解决方案,我尝试了这个:

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,"https://www.etermin.net/api/appointment");
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, array(
    'publickey'     =>  $publicKey,
    'salt'          =>  $salt,
    'signature'     =>  $encodedSignature,
    'start'         =>  '2021-04-28%2018:00',
    'end'           =>  '2021-04-28%2019:00',
    'calendarid'    =>  '1234',
    'firstname'     =>  'Max',
    'lastname'      =>  'Mustermann'
));

curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$server_output = curl_exec($ch);
curl_close ($ch);


echo '<pre>';
var_dump($server_output);
echo '</pre>';

我得到了回应:

string(11) "Bad Request"

我需要帮助! :(

1 个答案:

答案 0 :(得分:0)

试试这个(将头加密到头,而不是后域):

$publicKey = 'YOUR PUBLIC KEY';
$privateKey = 'YOUR PRIVATE KEY';
$salt = mt_rand();
$signature = hash_hmac('sha256', $salt, $privateKey, true);
$encodedSignature = base64_encode($signature);

$url = "https://www.etermin.net/api/appointment"
$ch = curl_init($url);
curl_setopt(
            $ch, 
            CURLOPT_HTTPHEADER, 
            array(
                 'publickey:'.$publicKey,
                 'salt:'.$salt,
                 'signature:'.$encodedSignature 
            )
);

curl_setopt(
            $ch, 
            CURLOPT_POST, 
            1
);

curl_setopt(
            $ch,
            CURLOPT_POSTFIELDS,
            array(
                 'start'         =>  '2021-04-28%2018:00',
                 'end'           =>  '2021-04-28%2019:00',
                 'calendarid'    =>  '1234',
                 'firstname'     =>  'Max',
                 'lastname'      =>  'Mustermann'
            )
);

curl_setopt(
            $ch, 
            CURLOPT_RETURNTRANSFER, 
            true
);
$server_output = curl_exec($ch);
curl_close ($ch);