Andrew Park
Andrew Park

Reputation: 1489

curl CLI to php curl

I have a working CLI

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

which returns a string {"result":"success"}

But my php curl

$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;

shows the message "The page you were looking for doesn't exist." and then below that a "1" which is the $res with no error

Thanks

Upvotes: 0

Views: 454

Answers (3)

Aaron
Aaron

Reputation: 1

Please try:

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
    ));

Upvotes: 0

Alex Howansky
Alex Howansky

Reputation: 53563

You're sending multiple headers with the same key, thus each is wiping out the previous. You have to send the headers as an array:

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

Upvotes: 1

ZhukV
ZhukV

Reputation: 3178

you are in the array pass the same key: "CURLOPT_HTTPHEADER"

Please try:

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
));

Upvotes: 0

Related Questions