- 论坛徽章:
- 0
|
php curl post数据的问题
今天在做一个api增量的功能的时候出现了一个特别奇怪的问题。我用curl 想tomcat post数据的时候,tomcat竟然报错,所我post的数据
没有正确或得。但是,我用curl post给我自己写的一个页面,就可以在$_POST数组中获得数据。
为什么会出现这种问题那?
原因是在构建post 数据的数量出现问题。。。- 1 function api_notice_increment($url, $data)
- 2 {
- 3 $ch = curl_init();
- 4 curl_setopt($ch, CURLOPT_HEADER,0);
- 5 curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
- 6
- 7 curl_setopt($ch, CURLOPT_URL, $url);
- 8 curl_setopt($ch, CURLOPT_POST, 1);
- 9 curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
- 10 $lst['rst'] = curl_exec($ch);
- 11 $lst['info'] = curl_getinfo($ch);
- 12 curl_close($ch);
- 13 return $lst;
- 14 }
- 15 $url = "http://localhost/test/post.api.php?app=test&act=testact";
- 16 $data = array (
- 17 'goods_id' => '1010000001224',
- 18 'store_id' => '20708',
- 19 'status' => 'GoodsDownshelf',
- 20 );
复制代码 //post.api.php的代码- <?phperror_log(var_export($_POST,1),3,'d:/post.txt');
复制代码 执行上面的代码,在我的d:/生成的post.txt文件,其内容如下:- array (
- 'goods_id' => '1010000001224',
- 'store_id' => '20708',
- 'status' => 'GoodsDownshelf',
- )
复制代码 说明post的数据可以正常的获得。
修改上的代码- 1 <?php
- 2 function api_notice_increment($url, $data)
- 3 {
- 4 $ch = curl_init();
- 5 curl_setopt($ch, CURLOPT_HEADER,0);
- 6 curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
- 7
- 8 curl_setopt($ch, CURLOPT_URL, $url);
- 9 curl_setopt($ch, CURLOPT_POST, 1);
- 10 $data = http_build_query($data);
- 11 curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
- 12 $lst['rst'] = curl_exec($ch);
- 13 $lst['info'] = curl_getinfo($ch);
- 14 curl_close($ch);
- 15 return $lst;
- 16 }
- 17 $url = "http://localhost/test/post.api.php?app=test&act=testact";
- 18 $data = array (
- 19 'goods_id' => '1010000001224',
- 20 'store_id' => '20708',
- 21 'status' => 'GoodsDownshelf',
- 22 );
- 23
- 24
- 25 api_notice_increment($url,$data);
复制代码 只是在执行 curl_setopt($ch, CURLOPT_POSTFIELDS, $data);之前执行下$data = http_build_query($data);操作。
删除d:/post.txt文件
再次运行。
再次打开d:/post.txt文件,其内容如下:- array (
- 'goods_id' => '1010000001224',
- 'store_id' => '20708',
- 'status' => 'GoodsDownshelf',
- )
复制代码 如果不将$data 进行http_build_query的话,java代码就不能获得post的数据,http_build_query以后就可以正常的获得了。 |
|