2012-11-02 122 views
0

我有一个工作CLI卷曲CLI到PHP卷曲

curl -X POST \ 
-H "X-Parse-Application-Id: ID" \ 
-H "X-Parse-REST-API-Key: KEY" \ 
-H "Content-Type: application/json" \ 
-d '{ 
    "channels": [ 
     "Giants", 
     "Mets" 
    ], 
    "data": { 
     "alert": "The Giants won against the Mets 2-3." 
    } 
    }' \ 
https://api.parse.com/1/push 

它返回一个字符串{"result":"success"}

但我的PHP卷曲

$post = json_encode(array('channels'=>array('Giants','Mets'),'data'=>array('alert'=>'The Giants won against the Mets 2-3'))); 
$ch = curl_init(); 
curl_setopt_array($ch, array(
      CURLOPT_URL    => 'https://api.parse.com/1/push', 
      CURLOPT_HTTPHEADER  => array(
              'X-Parse-Application-Id: ID', 
              'X-Parse-REST-API-Key: KEY', 
              'Content-Type: application/json' 
             ), 
      CURLOPT_POST   => true, 
      CURLOPT_POSTFIELDS  => $post, 
      CURLOPT_FOLLOWLOCATION => true, 
      CURLOPT_RETURNTRANSFER => true 
     )); 
$res = curl_exec($ch); 

if (curl_error($ch)) { 
    echo "Curl error: " . curl_error($ch); 
} 
curl_close($ch); 
echo $res; 

显示消息“您要查找的页面不存在“。然后下面一个“1”,这是$res没有错误

感谢

+0

[转换命令行卷曲到PHP卷曲]可能重复(http://stackoverflow.com/questions/1939609/convert-command-line-curl-to-php-curl) – Gajus

回答

1

您使用相同的密钥发送多个标题,因此每个标题都会删除以前的标题。你必须发送标题为数组:

CURLOPT_HTTPHEADER => array(
    'Content-type: text/plain', 
    'Content-length: 100', 
    '...' 
) 
+0

感谢您的快速响应,我将其更改为上述编辑的数组(男孩,我是否感觉像涂料),但仍然收到相同的“不存在”错误。它可以与SSL有关吗? –

+0

我的问题是你提到的+未设置卷曲的SSL。谢谢 –

0

你的数组中传递相同的密钥:“CURLOPT_HTTPHEADER”

请尝试:

curl_setopt_array($ch, array(
    CURLOPT_URL   => 'https://api.parse.com/1/push', 
    CURLOPT_HTTPHEADER  => "X-Parse-Application-Id: ID\n" . 
     "X-Parse-REST-API-Key: KEY\n" . 
     "Content-Type: application/json", 
    CURLOPT_POST  => true, 
    CURLOPT_POSTFIELDS => $post, 
    CURLOPT_FOLLOWLOCATION => true, 
    CURLOPT_RETURNTRANSFER => true 
)); 
+0

感谢您的快速响应,我将其更改为上面编辑的数组(男孩,我觉得自己像一个涂料),但仍然收到“不存在“错误。它可以与SSL有关吗? –

0

请尝试:

curl_setopt_array($ch, array(
     CURLOPT_URL   => 'https://api.parse.com/1/push', 
     CURLOPT_HTTPHEADER  => "X-Parse-Application-Id: ID\n" . 
      "X-Parse-REST-API-Key: KEY\n" . 
      "Content-Type: application/json", 
     CURLOPT_POST  => true, 
     CURLOPT_POSTFIELDS => $post, 
     CURLOPT_FOLLOWLOCATION => true, 
     CURLOPT_RETURNTRANSFER => true, 
     CURLOPT_SSL_VERIFYPEER => false//not SSL verification 
    ));