I have a function make_curl_request to make curl request.
/**
* General Function to make curl request */
function make_curl_request($url, $data)
{
ob_start();
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_exec($ch);
curl_close($ch);
$strCurlResponse = ob_get_contents();
ob_end_clean();
return $strCurlResponse;
}
I am calling it like:
$strGatewayResponse = make_curl_request( REQUEST_URL, compact('strMobileNo', 'strKeywords', 'strApiKey') );
I tried the things but can’t get my code working fine. Currently its just return string(“”) as the output. Where am i going wrong?
My target is to simple post few data to next page located on other domain and get its xml response and parse it and display it. Is there any other simple and good solution?
The problem is that you’ve got RETURNTRANSFER set to TRUE, which means curl returns its output instead of directly outputting it. However, you’re not capturing that output in a variable, so it’s dropping on the floor.
You’ve got two options
a) remove the ob_*() functions to remove the PHP buffering and then do
after which
$datacontains the contents of the URL you’ve fetched.b) remove the RETURNTRANSFER option, and let curl do its normal “output to client directly” thing, which then gets captured by the PHP output buffering.