Php 利用cURL头问题的REST-ful连接

Php 利用cURL头问题的REST-ful连接,php,rest,curl,Php,Rest,Curl,我花了数小时利用PHP文档、API文档以及其他有关stackoverflow的帖子对此进行故障排除,最后我请求帮助 我正在尝试使用新的pbSmartConnections API编写接口: 我在fsockopen和cURL方面都遇到了挑战,但是我似乎能够在使用cURL的过程中走得更远,所以这就是我在这里介绍的内容。以下是挑战: 根据我对文档的理解,我应该将ApiKey作为标题的一部分传递。当我这样做时,不管我试图以不同的方式构造代码,我总是收到以下响应: { "ErrorCode": 1

我花了数小时利用PHP文档、API文档以及其他有关stackoverflow的帖子对此进行故障排除,最后我请求帮助

我正在尝试使用新的pbSmartConnections API编写接口:

我在fsockopen和cURL方面都遇到了挑战,但是我似乎能够在使用cURL的过程中走得更远,所以这就是我在这里介绍的内容。以下是挑战:

根据我对文档的理解,我应该将ApiKey作为标题的一部分传递。当我这样做时,不管我试图以不同的方式构造代码,我总是收到以下响应:

{
    "ErrorCode": 10,
    "Message": "Unauthorized"
}
我希望一位同事能在下面的代码中看到一些东西(也请提出任何批评和/或建议!): (注意:下面的API密钥是有效的。它连接到一个没有任何价值的帐户,所以可以在测试中使用它)


如果您想知道,虽然我希望它作为标题的一部分工作,但我也尝试将其作为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文档说明:

要设置的HTTP头字段数组,格式为
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可能无效的问题。

我终于从支持人员那里得到了回复,他们指出我使用了错误的url(尽管此时,它是他们的url中的url)

API文档中的URL是他们的登台,而不是生产。将URL切换到他们在回复中发送的正确URL-
rest.api.pbsmartconnections.com
对连接所起的作用令人惊讶。这一次改变,一切都开始正常工作


感谢所有查看的人,并向@mvdnes咨询有关如何设置标题的建议。

API密钥或帐户一定有问题。即使作为查询字符串传递,它也会返回401(“401未经授权:API密钥丢失或无效”)。我知道API密钥是准确的-但您的帐户有效且有效吗?@Mahdi.Montgomery-谢谢您的评论。是的,我是肯定的。这些东西我检查了很多次,有点不可思议。我甚至创建了新的API键并使用它们,等等。我已经向Pitney Bowes提交了一个请求,正在等待响应。请尝试在命令行中使用
curl
使其工作。当前,它为命令返回无效的API键:
curl-k-H'ApiKey:41460b3f-8f35-4878-b78d-49ca7f29c071'-ihttps://rest.pbsyscontrol.com/v1/Ping
如果您的ApiKey出现问题。。。
 curl_setopt($ch, CURLOPT_HTTPHEADER, array("Content-Type: application/json", "Accept: application/json", "ApiKey: 41460b3f-8f35-4878-b78d-49ca7f29c071"));