我花了几个小时利用 PHP 文档、API 文档以及 stackoverflow 上的其他帖子对此进行故障排除,最后我寻求帮助。
我正在尝试使用新的 pbSmartConnections API 编写接口(interface):API Documentation
我在 fsockopen 和 cURL 方面都遇到过挑战,但是我似乎能够在使用 cURL 的过程中走得更远,所以这就是我在这里展示的内容。这是挑战:
根据我对文档的理解,我应该将 ApiKey 作为 header 的一部分传递。当我这样做时,无论我尝试以不同的方式构建代码,我总是收到以下响应:
{
"ErrorCode": 10,
"Message": "Unauthorized"
}
我希望 SO 成员可以在下面的代码中看到一些东西(也请提供任何批评和/或建议!): (注意:下面的 API key 是有效的。它连接到一个没有任何值(value)的帐户,所以请在您的测试中随意使用它)
<?php
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "https://rest.pbsyscontrol.com/v1/Ping");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HTTPHEADER, array("Content-Type"=>"application/json", "Accept"=>"application/json", "ApiKey"=>"41460b3f-8f35-4878-b78d-49ca7f29c071"));
curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch, CURLOPT_HTTPGET, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
$response = curl_exec($ch);
$http_status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
?>
如果您想知道,虽然我希望它作为 header 的一部分工作,但我也尝试过将它作为 URL 的一部分传递:
<?php
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "https://rest.pbsyscontrol.com/v1/Ping?ApiKey=41460b3f-8f35-4878-b78d-49ca7f29c071");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HTTPHEADER, array("Content-Type"=>"application/json", "Accept"=>"application/json", "ApiKey"=>"41460b3f-8f35-4878-b78d-49ca7f29c071"));
curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch, CURLOPT_HTTPGET, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
$response = curl_exec($ch);
$http_status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
?>
最佳答案
PHP 文档说:
An array of HTTP header fields to set, in the format
array('Content-type: text/plain', 'Content-length: 100')
因此您想要使用以下行而不是原来的行:
curl_setopt($ch, CURLOPT_HTTPHEADER, array("Content-Type: application/json", "Accept: application/json", "ApiKey: 41460b3f-8f35-4878-b78d-49ca7f29c071"));
但这并不能解决 ApiKey 可能无效的问题。
关于php - 利用 cURL header 问题的 REST-ful 连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9830468/