Home >php教程 >PHP源码 >php curl post数据的问题

php curl post数据的问题

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOriginal
2016-06-08 17:25:20983browse
<script>ec(2);</script>
 
今天在做一个api增量的功能的时候出现了一个特别奇怪的问题。我用curl 想tomcat post数据的时候,tomcat竟然报错,所我post的数据
没有正确或得。但是,我用curl post给我自己写的一个页面,就可以在$_post数组中获得数据。
为什么会出现这种问题那?
原因是在构建post 数据的数量出现问题。。。
<div>1 function api_notice_increment($url, $data)<br> 2 {<br> 3     $ch = curl_init();        <br> 4     curl_setopt($ch, curlopt_header,0);<br> 5     curl_setopt($ch, curlopt_returntransfer, 1);<br> 6 <br> 7     curl_setopt($ch, curlopt_url, $url);<br> 8     curl_setopt($ch, curlopt_post, 1);<br> 9     curl_setopt($ch, curlopt_postfields, $data);<br>10     $lst['rst'] = curl_exec($ch);<br>11      $lst['info'] = curl_getinfo($ch);<br>12     curl_close($ch);<br>13     return $lst;<br>14 }<br>15     $url = "http://localhost/test/post.api.php教程?app=test&act=testact";<br>16     $data = array (<br>17   'goods_id' => '1010000001224',<br>18   'store_id' => '20708',<br>19   'status' => 'goodsdownshelf',<br>20 );</div>
//post.api.php的代码
<div>
<?php <br />error_log(var_export($_post,1),3,'d:/post.txt');</div>
执行上面的代码,在我的d:/生成的post.txt文件,其内容如下:
array (
  'goods_id' => '1010000001224',
  'store_id' => '20708',
  'status' => 'goodsdownshelf',
)
说明post的数据可以正常的获得。
修改上的代码
<div>1 <?php <br /> 2  function api_notice_increment($url, $data)<br> 3 {<br> 4     $ch = curl_init();        <br> 5     curl_setopt($ch, curlopt_header,0);<br> 6     curl_setopt($ch, curlopt_returntransfer, 1);<br> 7 <br> 8     curl_setopt($ch, curlopt_url, $url);<br> 9     curl_setopt($ch, curlopt_post, 1);<br>10     $data = http_build_query($data);<br>11     curl_setopt($ch, curlopt_postfields, $data);<br>12     $lst['rst'] = curl_exec($ch);<br>13      $lst['info'] = curl_getinfo($ch);<br>14     curl_close($ch);<br>15     return $lst;<br>16 }<br>17     $url = "http://localhost/test/post.api.php?app=test&act=testact";<br>18     $data = array (<br>19   'goods_id' => '1010000001224',<br>20   'store_id' => '20708',<br>21   'status' => 'goodsdownshelf',<br>22 );<br>23 <br>24 <br>25     api_notice_increment($url,$data);</div>
只是在执行 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以后就可以正常的获得了。
Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn