首页 > php教程 > PHP源码 > 正文

php curl post数据的问题

php中文网
发布: 2016-06-08 17:25:20
原创
1300人浏览过
<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以后就可以正常的获得了。
相关标签:
PHP速学教程(入门到精通)
PHP速学教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号