API请求$ _POST返回空数组

时间:2014-06-08 14:09:15

标签: php json api rest post

我正在使用Zurmo并尝试使用REST API创建一个新帐户。我精确地遵循了这个文档:http://zurmo.org/wiki/rest-api-specification-accounts将所需的参数作为json数组传递。

这是我的PHP代码:

public function actionCreateOrUpdate()         {

     $params=$_POST;
    $modelClassName=$this->getModelName();

    foreach ($params as $param)

    {
        if (!isset($param))
        {
            $message = Zurmo::t('ZurmoModule', 'Please provide data.');
            throw new ApiException($message);
        }

            $r=$this->GetParam($param);

            $res= array('status' => 'SUCCESS',  'data' => array($r));


            print_r(json_encode($res,true));

     }

    }     

 function GetParam ($param){
        $modelClassName=$this->getModelName();



        if (isset($param['mobile_id'] ) && !$param['mobile_id']=='' &&!$param['mobile_id']==null)
        {   $id=$param['mobile_id'];

        $params=array();

            foreach ($param as $k => $v) {

                if(!($k=='mobile_id')) {

                    $params[$k] = $v;}



            }
            if ($params=null){$message = Zurmo::t('ZurmoModule', 'Please provide data.');
            throw new ApiException($message);}

        $tableName = $modelClassName::getTableName();
        $beans = ZurmoRedBean::find($tableName, "mobile_id = '$id'");

        if (count($beans) > 0)
        {
            $result    =  $this->processUpdate($id, $params);
        }else{
            $result    =  $this->processCreate($params,$id);
        }
    }

          return $result;

    }    

问题是$ _POST方法返回一个空数组。在调试时我尝试使用print_r($ _ POST)并且它还返回了一个空数组。我也尝试将参数作为纯文本传递并获得相同的结果。我尝试了$ _GET方法,但它确实有效。我认为问题出在$ _POST方法中,也许我需要在.php文件中更改一些内容。有什么想法吗?

2 个答案:

答案 0 :(得分:1)

你应该首先使用静态数据命中api,检查它是否正常工作,然后尝试将php集成到静态数据中。您需要阅读哪些操作接受哪种格式以及支持哪种方法的文档(GET OR POST)。然后尝试die();,然后在发送之前,如果形成的数组是按照文档。

答案 1 :(得分:0)

从java客户端使用REST API创建帐户时,我遇到了类似的问题。问题是我没有发送正确的POST请求。 另一个症状也是在服务器端print_r(file_get_contents("php://input"),true); php代码返回了正确的请求数据。

具体根本原因是:

  • Content-Type HTTP标头不是" application / x-www-form-urlencoded"

  • POST请求中的值字段值未正确编码(我使用java.net.URLEncoder.encode方法来克服此问题)

修好后,它起作用了。