php - 通过 Curl/PHP 查询 API

标签 php api curl parse-platform

我正在查看 Parse.com REST API 并使用 PHP 使用的 Curl 包装器进行调用。

原始 Curl 代码(有效):

curl -X GET \
  -H "X-Parse-Application-Id: myApplicationID" \
  -H "X-Parse-REST-API-Key: myRestAPIKey" \
  https://api.parse.com/1/classes/Steps

PhP 代码(有效):

$ch = curl_init('https://api.parse.com/1/classes/Steps');

curl_setopt($ch,CURLOPT_HTTPHEADER,array('X-Parse-Application-Id: myApplicationID',
    'X-Parse-REST-API-Key: myRestAPIKey',
    'Content-Type: application/json'));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

curl_exec($ch);
curl_close($ch);

这很好,但现在当我尝试添加查询约束时:

原始 Curl 代码(有效):

curl -X GET \
  -H "X-Parse-Application-Id: myApplicationID" \
  -H "X-Parse-REST-API-Key: myRestAPIKey" \
  -G \
--data-urlencode 'where={"steps":9243}' \
https://api.parse.com/1/classes/Steps

唉,我们最终得出了我的问题 - 与上述代码类似的 php 是什么?

PHP 代码(不工作):

$ch = curl_init('https://api.parse.com/1/classes/Steps');

$query = urlencode('where={"steps":9243}');

curl_setopt($ch,CURLOPT_HTTPHEADER,array('X-Parse-Application-Id: myApplicationID',
    'X-Parse-REST-API-Key: myRestAPIKey',
    'Content-Type: application/json'));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $query);

curl_exec($ch);
curl_close($ch);

错误响应:

Object ( [code] => 107 [error] => invalid json: where%3D%7B%22steps%22%3A9243%7D )

最佳答案

您的最后一个 PHP 示例已将请求从 GET 更改为 POST。在查询字符串而不是 POST 正文中传递您的参数。尝试:

$query = urlencode('where={"steps":9243}');
$ch = curl_init('https://api.parse.com/1/classes/Steps?'.$query);

curl_setopt(
    $ch, 
    CURLOPT_HTTPHEADER,
    array(
        'X-Parse-Application-Id: myApplicationID',
        'X-Parse-REST-API-Key: myRestAPIKey',
        'Content-Type: application/json'
    )
);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

curl_exec($ch);
curl_close($ch);

关于php - 通过 Curl/PHP 查询 API,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18026258/

相关文章:

curl - Google Cloud Storage - 使用 CURL 请求下载文件

php - 如何在PHP中设置cURL的 "--upload-file"参数?

php - 如何在 Laravel 应用程序中使类可全局访问?

php - 从 URL 中删除 index.php - Codeigniter 2

java - HiveMQ RESTful 身份验证插件

c - 如何设计版本化的C API

php - 如何从 url 将视频上传到 youtube

php - 检查远程linux服务器是否正在运行?

android - 如何通过 REST API 传输图像

curl - 无法使用 brew 安装任何东西,错误 : Failed to download resource "git--html"