php - 利用 cURL header 问题的 REST-ful 连接

标签 php rest curl

我花了几个小时利用 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/

相关文章:

php - 将两个数组转换为关联数组 - PHP

java - 带有 Gradle 的 Tomcat 上的 Spring REST 服务

bash - 如何从 Gitlab 下载私有(private)存储库而不暴露 url 中的访问 token ?

java - 具有二进制数据的 REST 服务

python - 将 'curl -F' 转换为 Python 请求

RCurl::getURL 超出最大客户端数量

php - 基于父类别的 jQuery ajax 无限动态选择框

php - 如何使用html在php中上传文件

php - Drupal 6.x View 如何查询与单个内容相关的多个分类术语?

php - 使用 REST 直接通过 id 来识别 mysql 条目是个好主意吗?