这在bash中可以正常工作:
curl https://test.url.com/api/id/98765 -H 'API_KEY: xxxxxxxxxx' -H 'Authorization: Basic xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=='
这在PHP中不起作用(没有返回任何内容):
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL,'https://test.url.com/api/id/98765');
curl_setopt($curl, CURLOPT_HEADER, 1);
curl_setopt($curl, CURLOPT_HTTPHEADER, array(
"API_KEY: xxxxxxxxxx8",
"Authorization: Basic xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=="
));
curl_setopt($curl, CURLOPT_RETURNTRANSFER,1);
curl_setopt($curl, CURLOPT_VERBOSE, 1);
$results = curl_exec($curl);
echo 'out: '.$results;
不会返回任何错误。我期待json的结果
答案 0 :(得分:2)
您需要的是猜测(我们最终确定这是真的):
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0);
(请注意,0
与false
)同义。
这会阻止客户端验证远程位置的SSL证书。我建议这是因为您的网址是https://但它看起来像是一个自定义构建的解决方案,您可能还没有为其配置公共可信证书(还)。
the php docs中提供了有关CURLOPT_SSL_VERIFYPEER
的更多信息。
答案 1 :(得分:0)
以下PHP代码对我来说非常适合着名的API。在这里,我必须实现CURLOPT_SSL_VERIFYPEER和CURLOPT_USERAGENT。你可以试试这个
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "https://testurl.com/");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_TIMEOUT, 15);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']);
$result = curl_exec($ch);
curl_close($ch);