php使用curl的post方法字符串和数组传值的区别
来源:互联网 发布:基础算法有哪些 编辑:程序博客网 时间:2024/05/07 14:34
最近在工作中需要请求第三方的一个java版的接口,起初是使用数组进行传参,代码写完之后发现接口死活调试不通,总是提示传参为空,纠结了很久之后,决定尝试使用字符串传参的方式来请求接口,没想到这次居然调试成功了,这让我有了研究这两者究竟有何区别的兴趣。
本地的测试代码如下:
curl.php
<?phpfunction curl_post($url, $data){ $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, $data); $output = curl_exec($ch); curl_close($ch); return $output;}$params = array();$params['username'] = 'ben';$params['password'] = 'lalala';print_r(curl_post('http://localhost/curl/post.php', $params));$params = array();$params['username'] = urlencode('ben');$params['password'] = urlencode('lalala');$paramsStr = "username={$params['username']}&password={$params['password']}";print_r(curl_post('http://localhost/curl/post.php', $paramsStr));?>
post.php
<?phpecho "-------php://input-----<br/>";var_dump(@file_get_contents('php://input'));echo "-------post-----<br/>";var_dump($_POST);echo "-------server-----<br/>";var_dump($_SERVER);
执行结果可以参照如下截图:
从如上截图我们可以看出,php使用curl的post方法字符串和数组传值有如下几种区别:
1、在使用数组传值时,http头中content_type被设置成了multipart/form-data;而在使用字符串传值时,content_type为application/x-www-data-urlencoded。
2、在使用数组传值时,php://input是接收不到数据的,这和content_type的设置有关,这一点在另一篇文章中也有论述:http://blog.csdn.net/u011250882/article/details/47188883
3、不管使用字符串或数组传参,$_POST在大部分情况下(少数情况例外,如传递xml数据时,具体见http://blog.csdn.net/u011250882/article/details/47188883),都能正确接收参数。
由于不了解java,粗浅的理解为,在java中,对post数据的接收与php中php://input方法相类似,所以才出现了开篇提到的问题。
总结:推荐使用字符串传值的方式,兼容性好,而且数据传输较数组传值更小。
0 0
- php使用curl的post方法字符串和数组传值的区别
- PHP cURL之CURLOPT_POSTFIELDS使用数组和字符串的区别
- PHP使用Curl扩展Post多维数组的例子
- PHP中使用cURL实现Get和Post请求的方法
- PHP中使用cURL实现Get和Post请求的方法
- PHP中使用cURL实现Get和Post请求的方法
- PHP中使用CURL实现Get和Post请求的方法
- PHP中使用cURL实现Get和Post请求的方法
- PHP中使用cURL实现Get和Post请求的方法
- PHP中使用cURL实现Get和Post请求的方法
- PHP中使用CURL实现GET和POST请求的方法以及含义介绍
- PHP中使用cURL实现Get和Post请求的方法
- 在PHP中使用CURL实现GET和POST请求的方法
- 在PHP中使用CURL实现GET和POST请求的方法
- PHP中使用cURL实现Get和Post请求的方法
- PHP中使用cURL实现Get和Post请求的方法
- PHP中使用cURL实现Get和Post请求的方法
- PHP中使用cURL实现Get和Post请求的方法
- hdu 4421 Bit Magic 2-sat
- foj2204 Problem 2204 7 dp
- jsp的转跳方法
- 《Web安全测试》读书笔记
- 用sphinx写文档
- php使用curl的post方法字符串和数组传值的区别
- 《Web入侵安全测试与对策》读书笔记
- 关于最短路
- JavaScript中的windon部分功能演示
- “XXX”不扩展类“System.Web.UI.Page”,因此此处不允许。
- 自定义控件(Task01)——最简单的自定义控件
- 网卡多队列学习小结
- 数据库水平拆分和垂直拆分区别
- 165. Compare Version Numbers