通过Curl/PHP查询API

Jon*_*mos 9 php api curl parse-platform

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

原始卷曲代码(作品):

curl -X GET \
  -H "X-Parse-Application-Id: myApplicationID" \
  -H "X-Parse-REST-API-Key: myRestAPIKey" \
  https://api.parse.com/1/classes/Steps
Run Code Online (Sandbox Code Playgroud)

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);
Run Code Online (Sandbox Code Playgroud)

多数民众赞成好,但现在当我尝试添加查询约束时:

原始卷曲代码(作品):

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
Run Code Online (Sandbox Code Playgroud)

唉,我们最终得出了我的问题 - 上述代码的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);
Run Code Online (Sandbox Code Playgroud)

错误回复:

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

Mat*_*t S 12

您的上一个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);
Run Code Online (Sandbox Code Playgroud)