2012-09-24 61 views
0

所以这里是问题。我想打电话给我用PHP API卷曲后,像这样PHP CURL POST字段

<?php 
     $ch = curl_init(); 
     $data = array('page' => $pageid); 
     $data = json_encode($data); 

     $fields = 'data=' . urlencode($data); 

     /*echo $fields; ## data=%7B%22page%22%3A%222%22%7D */ 

     curl_setopt($ch, CURLOPT_URL, 'http://www.myurl.com/api/gallery'); 
     curl_setopt($ch, CURLOPT_POST, 1); 
     curl_setopt($ch, CURLOPT_POSTFIELDS, $fields); 
     curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 

     $result =curl_exec($ch); 

     $products=json_decode($result,true); 
?> 

,并在其中使用Zend Framework我的API,我收到像这样

<?php 
     $data = json_decode($this->_getParam('data',''), true); 
     $query = array(); 
     $query['status'] = '1'; 
     $query['pid'] = (isset($data['pid']))? $data['pid'] : ''; 
     $query['search'] = (isset($data['search']))? $data['search'] : ''; 
     $query['orderby'] = (isset($data['sort']))? $data['sort'] : 'latest'; 
     $query['page'] = (isset($data['page']))? $data['page'] : '1'; 
     $query['pagelimit'] = (isset($data['pagelimit']))? $data['pagelimit'] : '2'; 
?> 

数据时我检查的价值查询,它没有收到使用CURL传递的“页面”值。我做错了什么?

干杯

+0

你确定你想通过'数据= {一些:对象,云:这里}' – chovy

+0

啊,我只是想保持json格式 – zaw

+0

尝试传递{object},然后转储$ _POST以查看获得的内容。 – chovy

回答

0

首先,你应该检查_getParam方法正确返回POST变量。

然后,请注意,你应该在一个真正的json字符串上使用json_decode!你应该解码url数据变量($ this - > _ getParam('data','')的结果),然后将它传递给json_decode!

我假设你_getParam法正常工作, 则:

$data = json_decode(urldecode($this->_getParam('data','')), true); 
$query = array(); 
. 
. 
.