On 04/09/2012 19:14, ioan...@btinternet.com wrote:

On 04/09/2012 18:41, Matijn Woudt wrote:
On Tue, Sep 4, 2012 at 7:35 PM, ioan...@btinternet.com
<ioan...@btinternet.com> wrote:
I am hoping someone can spot what is missing here.  I am getting null
from curl-ing a page with json post variables.

I try this url in my Firefox browser -


(#somevar.someothervar are irrelevant, I think, as I get the curl
from Firebug below.)

In Firebug, this shows:

POST http://www.targetsite.com/ajax/search.xml

In Firebug, below this link are tabs for: Headers, Post, Response,
XML and
Cookies.  Post tab shows like:

VAR1           1
VAR2           "2012-09-12"
VAR3           null
CACHED         []
OPTIONS        null

To prove there is output, the Firebug Response tab shows:

<?xml version="1.0" encoding="utf-8"?>
<JSON> various JSON encoded stuff </JSON>

The above is what I am trying to curl.

My php code:

   $ch = curl_init();
   curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
   curl_setopt($ch, CURLOPT_POST, 1);

   //target page from Firebug above:
   curl_setopt($ch, CURLOPT_URL,

   //I was not sure how to represent CACHED [], so set it to null
try "CACHED"=>array()
   $data = array(
     "VAR1" => 1,
     "VAR2" => "2012-09-12",
     "VAR3" => null,
   curl_setopt($ch, CURLOPT_POSTFIELDS, $data);

   //make the request
   $result = curl_exec($ch);

   //this returns null

Any ideas where to go with this?  Maybe I need to include the
Cookies? I use
the above php and curl functions normally so it's all installed on the


It might be that the site is using sessions/cookies. Have a look at
the header data with firebug.
Not sure if that's the problem, to find out what's really going on, call
echo curl_error($ch);
after curl_exec to find out what went wrong exactly.
If you still don't know how to proceed, paste the result of the
curl_error call in your reply.

- Matijn

I added the cookies to the post array.  I changed php array to
"CACHED"=>array() for the JSON "CACHED":[], and corrected php's null to
NULL.  It is not returning any error.  The browser was showing 'resource
not present' before I added the cookies to the post array, now it just
returns null $result.  Looks like I am transcribing something incorrectly.


I eventually sorted this out.  Solution involved:

POST params needed to be json_encoded
        "name" => "value"

Thanks to http://www.lornajane.net/posts/2011/posting-json-data-with-php-curl

curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($ch, CURLOPT_POSTFIELDS, $post);

Also, included headers as array and set application type as json:
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
    'Content-Type: application/json',
        'Content-Length: ' . strlen($post))

Set encoding to auto-detect:
curl_setopt( $ch, CURLOPT_ENCODING, "");


PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to