2014-06-08 105 views
2

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

这是我的PHP代码:

公共职能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文件中更改某些内容。请有任何想法吗?

+0

您能显示请求吗?如果'$ _GET'正在工作,而不是'$ _POST',那么发送它时可能会缺少请求类型。 – BrainPicker

+0

请求类型是REST。我也尝试使用HTTPRequester,但它给出了相同的结果:( – user3640056

回答

1

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

+0

其实我试着用静态数据来打开api,它工作正常并且我实现的方法支持POST。谢谢你的建议。 – user3640056

0

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

具体的根本原因是:

  • 的Content-Type HTTP头不是 “应用程序/ x WWW的形式进行了urlencoded”

  • 在POST请求中的值字段值不正确编码(我用java.net.URLEncoder.encode方法来克服这一点)

修复这些后,它的工作。

相关问题