Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to get array value as return value on curl php request?

Tags:

php

curl

I am having hard time using curl PHP as I am new to PHP. The problem is that I am not getting any return value from a curl request. There is a remote file I am accessing which has this code:

test.php:

$test->getCall();
public function getCall() {
  $var = array('fname'=>'jack','lname'=>'williams');
  return $var;
}

The script from which I am making the call.

requestVal.php

try{
  $ch = curl_init();
  if (FALSE === $ch){
    throw new Exception('failed to initialize');
  }
  curl_setopt($ch, CURLOPT_URL,"http://www.xyz.com/app/src/test.php");
  curl_setopt($ch, CURLOPT_POST, TRUE);
  curl_setopt($ch, CURLOPT_POSTFIELDS, $msg);
  curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
  curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
  $p_result = curl_exec($ch);
  var_dump($p_result);
  print_r($p_result);
  if (FALSE === $p_result) {
    throw new Exception(curl_error(), curl_errno());
    curl_close($ch);
  } else{
    curl_close($ch);
    return $p_result;
  }
}catch(Exception $e) {
  trigger_error(sprintf('Curl failed with error #%d: %s',$e->getCode(), $e->getMessage()),E_USER_ERROR);
}

I don't get any value in $p_result nor an exception curl_error().

like image 683
user1371033 Avatar asked Dec 04 '22 13:12

user1371033


1 Answers

No matter what you echo in your test.php, curl will read it as a String. In your case, you echo nothing. You call a function that returns the array, but you don't print the array, so nothing is sent to output. If you want to get the same array in requestVal.php after curl request, you need to encode it in some way, I would suggest JSON as it's easy to start with. For a quick example, in place of $test->getCall(); you could do:

echo json_encode($test->getCall());

And in requestVal.php:

$array = json_decode(trim($p_result), TRUE);
print_r($array);

You can find each function description at php.net.

like image 95
Ranty Avatar answered Jan 12 '23 01:01

Ranty