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
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:
In Firebug, below this link are tabs for: Headers, Post, Response,
Cookies. Post tab shows like:
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:
//I was not sure how to represent CACHED , so set it to null
$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
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.
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"
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-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