cURL不在PHP中发送POST数据

时间:2014-02-19 21:03:05

标签: php rest curl

我正在尝试创建一个小的API文件,无论出于什么原因,我通过POST发送cURL数据的api.php文件都没有收到数据。我无休止地看着这里和谷歌,似乎无法弄清楚出了什么问题。我尝试了各种不同的方法和工作。

这是我的代码。

client.php:

$url = 'http://localhost/listcross2/api.php';

  //var_dump($_POST);
  $rCURL = curl_init();

  $params = array('action' => 'login', 
      'username' => $_POST["username"],
       'password' => $_POST["password"]);

  curl_setopt_array($rCURL, array(
    CURLOPT_RETURNTRANSFER => 1,
    CURLOPT_URL => $url,
    CURLOPT_POST => true,
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_REFERER => "http://www.localhost/listcross2/client.php",
    CURLOPT_POSTFIELDS => http_build_query($params)
    )
  );

  $aData = curl_exec($rCURL);

  if(curl_errno($rCURL))
  {
      echo 'error:' . curl_error($rCURL);
  }

  curl_close($rCURL);

  $login_result = json_decode ( $aData, true );

  var_dump($login_result);

api.php

$value = "An error has occurred within API: ";
var_dump($_POST);

// For POST actions
if (!empty($_POST))
{
  switch($_POST["action"])
  {
    case "login":
        if (isset($_POST["username"]) && isset($_POST["password"]))
          $value = login($_POST["username"], $_POST["password"]);
        else
          $value = "Missing argument";
        break;
  }
}

exit(json_encode($value));

1 个答案:

答案 0 :(得分:0)

当我提交到API页面时,出现以下错误:

Fatal error: Call to undefined function login() in /var/www/playground/api.php on line 13

如果定义名为login()的函数,则不会再出现此错误。此外,这段代码:

exit(json_encode($value));

导致null值,因为您传递的是无效参数。如果传递json_encode()数组,则不再获取此函数返回的空值。登录功能的一个简单示例:

function login($username, $password) {
    return array("username"=>$username, "password"=>$password);
}