使用cURL发布到API

时间:2018-05-18 09:35:41

标签: php curl

我尝试使用cURL将数据发布到API。如果我通过API提供者的操场进行,它可以工作。

但通过我的代码,某些东西似乎无法运作:

$headers = array();
$headers[] = 'Authorization: hmac ' .$websiteKey.':'.$hmac .':'.$nonce . ':'.$time;
$curl = curl_init('testcheckout.buckaroo.nl/json/Transaction');
curl_setopt($curl, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($curl,CURLOPT_POSTFIELDS, $post);
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);    
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
$result = curl_exec($curl);
return $result;

if(curl_error($curl))
{
    echo 'error:' . curl_error($c);
}

curl_close($curl);

我尝试使用curl_error函数进行错误处理,但这似乎也无法正常工作。我从来没有得到过错误,即使我犯了一些明显的错误,比如故意将我的API秘密更改为没有意义的东西。如何发送数据。我如何发布到API以及为什么我没有收到任何错误?

1 个答案:

答案 0 :(得分:2)

几点说明:

  • return语句应该在检查错误之后。
  • 要检查错误,您应该测试$result === false
  • $c中未定义变量curl_error()
  • 网址格式错误,缺少方案(例如http://)。
  • 选项CURLOPT_URL是多余的,因为已在curl_init()中定义。

代码:

$headers = array();
$headers[] = 'Authorization: hmac ' .$websiteKey.':'.$hmac .':'.$nonce . ':'.$time;
$curl = curl_init('http://testcheckout.buckaroo.nl/json/Transaction');
curl_setopt($curl, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($curl,CURLOPT_POSTFIELDS, $post);
// curl_setopt($curl, CURLOPT_URL, $url); // already defined in curl_init().
curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
$result = curl_exec($curl);
if($result === false)
{
    echo 'error:' . curl_error($curl);
}
curl_close($curl);
return $result;