4

我很难使用 curl PHP,因为我是 PHP 新手。问题是我没有从 curl 请求中获得任何返回值。我正在访问一个包含以下代码的远程文件:

测试.php:

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

我从中拨打电话的脚本。

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

我没有任何价值,$p_result也没有例外curl_error()

4

3 回答 3

15

无论您test.phpString. 在你的情况下,你什么都不回应。您调用一个返回数组的函数,但您不打印数组,因此没有任何内容发送到输出。如果您想requestVal.php在 curl 请求后获得相同的数组,则需要以某种方式对其进行编码,我建议使用 JSON,因为它很容易开始。举个简单的例子,$test->getCall();你可以这样做:

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

并在requestVal.php

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

您可以在 中找到每个功能说明php.net

于 2012-12-02T19:51:08.217 回答
1

如果您使用 curl,您应该会得到与在任何浏览器中运行 test.php 脚本完全相同的结果。所以,如果你的 test.php 是这样的:

echo "123";

在您的浏览器中,您会看到“123”,这也是您将进入您的$p_result变量。如果你的 test.php 是这样的:

function foo() {
    return "123";
}

foo();

你在浏览器中什么也看不到,你也什么也没有$p_result

所以,试着改变你的 test.php 类似的东西:

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

var_dump($test->getCall()); // of course you will show these values in better way (depends on your needs)
于 2012-12-02T14:49:43.273 回答
0

就像 Ranty 说的,你可以在test.php代码中返回一个字符串

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

因此,您可以通过反序列化来自远程服务器的数据,在requestVal.php代码中捕获序列化数据

unserialize($content)
于 2013-11-22T06:24:48.400 回答