当使用curlpost一个请求的话,一般代码如下:

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

当这里传递的$data如果是标准的一个phparray对象的话,如果array有嵌套,比如

array(a=>array(5))的话,接受到的对象就会变成 array(a => Array)这样,是不符合请求的;

如果$data是一个标准的json的话,依然会有问题:

$data= {"a"=[1,2,3]}则请求后的结果是

array({a=>array(xxx)})具体原因不知道,貌似是由于$_POST对象解析相关

所以,如果想传参数的话可以有以下2种方式

1. 传递对象:http_build_query($data),传递这个值,这请求到的是ok的

2. 传递json:在外面包装一层array既 $data['json'] = {"a"=[1,2,3]} 则,获得到的$_POST['json']是ok的

posted on 2012-09-19 11:01  Rik~  阅读(1592)  评论(0编辑  收藏  举报