xiaowei8782088 发表于 2015-8-29 12:49:10

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的代码




<?php
error_log(var_export($_POST,1),3,'d:/post.txt');
  执行上面的代码,在我的d:/生成的post.txt文件,其内容如下:
  array (
'goods_id' => '1010000001224',
'store_id' => '20708',
'status' => 'GoodsDownshelf',
)
  说明post的数据可以正常的获得。
  修改上的代码




1 <?php
2function 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以后就可以正常的获得了。
页: [1]
查看完整版本: php curl post数据的问题