使用php和cURL调用API

3

你好,我正在尝试使用API。

我需要在头部添加API密钥 API端点 = http://overheid.io/api/kvk

如果您想测试一些东西,可以在此处创建帐户:https://overheid.io/auth/register 文档是荷兰语的,可以在此处找到:https://overheid.io/documentatie/kvk

这是我想出来的,但无法通过身份验证。

<?php 
$service_url = 'https://overheid.io/api/kvk';
$curl = curl_init($service_url);
curl_setopt($curl, CURLOPT_HEADER => true);
curl_setopt($curl, CURLOPT_HTTPHEADER, "ovio-api-key:the_api_key");
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
$curl_response = curl_exec($curl);
curl_close($curl);
print $curl_response;   
?>

编辑:我用解决方案替换了初始代码部分,但仍然没有成功。

有人能指导我正确的方向吗?

谢谢!


你的代码有几个排版错误,比如两行缺少了闭合的括号)。 - Jessica
此 API 使用 HTTPS,您是否使用带有 SSL 证书的 cURL?因为默认情况下,cURL 不信任它,可以使用 curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); - manjeet
@Jessica,谢谢,我已经添加了它们。 - Giancarlo
1个回答

4
您可以尝试使用CURLOPT_USERPWD选项传递身份验证标头。您似乎还有一些语法错误。
<?php 
$service_url = 'https://overheid.io/api/kvk';
$curl = curl_init($service_url);
curl_setopt($curl, CURLOPT_HEADER, true);
curl_setopt($curl, CURLOPT_USERPWD, "ovio-api-key:the_api_key");
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
$curl_response = curl_exec($curl);
curl_close($curl);
print $curl_response;   

但是,这个API似乎使用了自定义的标题...如果上述方法不起作用,您可以尝试以下方法:
curl_setopt($curl, CURLOPT_HTTPHEADER, array("ovio-api-key: yourkey")); 

更新:

我使用了他们网站上创建的账户,并使用以下内容:

<?php
$service_url = 'https://overheid.io/api/kvk';
$curl = curl_init($service_url);
curl_setopt($curl, CURLOPT_HEADER, true);
curl_setopt($curl, CURLOPT_HTTPHEADER, array("ovio-api-key: key"));
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
$curl_response = curl_exec($curl);
curl_close($curl);
print $curl_response;

当我使用他们提供的64位密钥替换“key”部分时,这对我很有用。


我尝试了两种方法,但仍然出现相同的错误:HTTP/1.1 401 未经授权 服务器:nginx/1.8.0 内容类型:application/json 传输编码:分块连接:保持活动状态 X-Powered-By:HHVM/3.7.3 可变:接受编码设置Cookie:xxx;过期=Sun,26-Jul-2015 16:40:53 GMT;最大年龄=7200;路径=/ 设置Cookie:laravel_session=yyy;过期=Sun,26-Jul-2015 16:40:53 GMT;最大年龄=7200;路径=/;httponly 缓存控制:无缓存日期:Sun,26 Jul 2015 14:40:53 GMT {"error":"No valid API key in the request. for more info check https://overheid.io/documentatie"} - Giancarlo
1
你试过在 : 后面加一个空格吗?很多示例都是这样展示的,包括他们链接到的文档。 - Jessica
@Jessica,谢谢你的建议,我已经在它后面加了一个空格,但是没有任何改变。 - Giancarlo
@Chris,我仍然收到“请求中没有有效的API密钥”错误。 我在IE / FF和Chrome中尝试了它。 我复制了整个示例,只替换了apikey 这可能是我的服务器上的cURL问题吗? 你能私信给我你的API密钥吗? - Giancarlo
请使用以下密钥进行尝试:481afd99f5ecc1c6d2ec3e8ac091bd4730ae26cce790afd4482684530e93047e稍后我将撤销该密钥。 - Chris Brand
显示剩余4条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接