0

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

1

3 Answers 3

1

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',
    '...'
)
Sign up to request clarification or add additional context in comments.

2 Comments

Thanks for the quick response, I changed it to an array (boy, do I feel like a dope) as edited above but still receiving the same "doesn't exist" error. Could it have something do with SSL?
My problems were what you mentioned + not setting the SSL for curl. Thanks
0

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

1 Comment

Thanks for the quick response, I changed it to an array (boy, do I feel like a dope) as edited above but still receiving the same "doesn't exist" error. Could it have something do with SSL?
0

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

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.