php curl模拟post请求和提交多维数组的示例代码


Posted in PHP onNovember 19, 2015

下面一段代码给大家介绍php curl模拟post请求的示例代码,具体代码如下:

<?php
$uri = "http://www.cnblogs.com/test.php";//这里换成自己的服务器的地址
// 参数数组
$data = array (
 'name' => 'tanteng'
// 'password' => 'password'
);
$ch = curl_init ();
// print_r($ch);
curl_setopt ( $ch, CURLOPT_URL, $uri );
curl_setopt ( $ch, CURLOPT_POST, 1 );
curl_setopt ( $ch, CURLOPT_HEADER, 0 );
curl_setopt ( $ch, CURLOPT_RETURNTRANSFER, 1 );
curl_setopt ( $ch, CURLOPT_POSTFIELDS, $data );
$return = curl_exec ( $ch );
curl_close ( $ch );
print_r($return);

2,远程服务器:

<?php
if(isset($_POST['name'])){
 if(!empty($_POST['name'])){
 echo '您好,',$_POST['name'].'!';
 }
}

下面给大家介绍php中curl模拟post提交多维数组。

今天需要用curl模拟post提交参数,请求同事提供的一个接口;但是传递的参数中,有一个参数的值为数组,用普通的curl post代码提交,会报错误

PHP Notice:  Array to string conversion in /test/functions.php on line 30
Notice: Array to string conversion in /test/functions.php on line 30

代码如下:

<?php
        $param = array(
                'uid' => 123, 
                'uids' => array(12,455), 
                'msgType' => 'WITH',  
                'nick' => 'aaa',   
               );
        $url = "http://cx.com/t.php";
        //通过curl的post方式发送接口请求
        SendDataByCurl($url,$param);
       //通过curl模拟post的请求;
function SendDataByCurl($url,$data=array()){
  //对空格进行转义
  $url = str_replace(' ','+',$url);
  $ch = curl_init();
  //设置选项,包括URL
  curl_setopt($ch, CURLOPT_URL, "$url");
  curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  curl_setopt($ch, CURLOPT_HEADER, 0);
  curl_setopt($ch,CURLOPT_TIMEOUT,3); //定义超时3秒钟 
   // POST数据
  curl_setopt($ch, CURLOPT_POST, 1);
  // 把post的变量加上
  curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
  //执行并获取url地址的内容
  $output = curl_exec($ch);
  //释放curl句柄
  curl_close($ch);
  return $output;
}

经过修改上面代码,可以完成提交数组的功能,而不会报php notice,代码如下:

//通过curl模拟post的请求;
function SendDataByCurl($url,$data=array()){
  //对空格进行转义
  $url = str_replace(' ','+',$url);
  $ch = curl_init();
  //设置选项,包括URL
  curl_setopt($ch, CURLOPT_URL, "$url");
  curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  curl_setopt($ch, CURLOPT_HEADER, 0);
  curl_setopt($ch,CURLOPT_TIMEOUT,3); //定义超时3秒钟 
   // POST数据
  curl_setopt($ch, CURLOPT_POST, 1);
  // 把post的变量加上
  curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($data));  //所需传的数组用http_bulid_query()函数处理一下,就ok了
  //执行并获取url地址的内容
  $output = curl_exec($ch);
  $errorCode = curl_errno($ch);
  //释放curl句柄
  curl_close($ch);
  if(0 !== $errorCode) {
    return false;
  }
  return $output;
}
PHP 相关文章推荐
用PHP编写PDF文档生成器
Oct 09 PHP
PHP简单系统查询模块代码打包下载
Jun 07 PHP
使用JSON实现数据的跨域传输的php代码
Dec 20 PHP
PHP取整数函数常用的四种方法小结
Jul 05 PHP
linux命令之调试工具strace的深入分析
Jun 03 PHP
PHP面向对象程序设计之接口用法
Aug 20 PHP
php生成html文件方法总结
Dec 01 PHP
php简单统计字符串单词数量的方法
Jun 19 PHP
PHP实现数组的笛卡尔积运算示例
Dec 15 PHP
thinkPHP5框架闭包函数与子查询传参用法示例
Aug 02 PHP
gearman管理工具GearmanManager的安装与php使用方法示例
Feb 27 PHP
PHP数组实际占用内存大小原理解析
Dec 11 PHP
phpStudy访问速度慢和启动失败的解决办法
Nov 19 #PHP
标准版Eclipse搭建PHP环境的详细步骤
Nov 18 #PHP
WordPress网站性能优化指南
Nov 18 #PHP
php+ajax实现无刷新分页
Nov 18 #PHP
如何使用php脚本给html中引用的js和css路径打上版本号
Nov 18 #PHP
php生成唯一数字id的方法汇总
Nov 18 #PHP
基于PHP给大家讲解防刷票的一些技巧
Nov 18 #PHP
You might like
php数组合并的二种方法
2014/03/21 PHP
Windows下的PHP 5.3.x安装 Zend Guard Loader教程
2014/09/06 PHP
Yii框架上传图片用法总结
2016/03/28 PHP
PHP中如何防止外部恶意提交调用ajax接口
2016/04/11 PHP
详解Yii2.0使用AR联表查询实例
2017/06/16 PHP
PHP+Redis开发的书签案例实战详解
2019/07/09 PHP
在JavaScript中遭遇级联表达式陷阱
2007/03/08 Javascript
前端开发必须知道的JS之原型和继承
2010/07/06 Javascript
jquery实现心算练习代码
2010/12/06 Javascript
css值转换成数值请抛弃parseInt
2011/10/24 Javascript
JavaScript中的匀速运动和变速(缓冲)运动详细介绍
2012/11/11 Javascript
JS+CSS实现自动改变切换方向图片幻灯切换效果的方法
2015/03/02 Javascript
JavaScript Array对象详解
2016/03/01 Javascript
基于javascript实现样式清新图片轮播特效
2016/03/30 Javascript
jquery uploadify如何取消已上传成功文件
2017/02/08 Javascript
详解JS异步加载的三种方式
2017/03/07 Javascript
Node.js简单入门前传
2017/08/21 Javascript
浅谈JavaScript 代码简洁之道
2019/01/09 Javascript
javascript(基于jQuery)实现鼠标获取选中的文字示例【测试可用】
2019/10/26 jQuery
Vue项目移动端滚动穿透问题的实现
2020/05/19 Javascript
微信小程序仿抖音视频之整屏上下切换功能的实现代码
2020/05/24 Javascript
详解element-ui 表单校验 Rules 配置 常用黑科技
2020/07/11 Javascript
[49:08]FNATIC vs Infamous 2019国际邀请赛小组赛 BO2 第二场 8.16
2019/08/18 DOTA
python中getaddrinfo()基本用法实例分析
2015/06/28 Python
详解Python Socket网络编程
2016/01/05 Python
python虚拟环境virualenv的安装与使用
2016/12/18 Python
详解python数据结构和算法
2019/04/18 Python
Python打包模块wheel的使用方法与将python包发布到PyPI的方法详解
2020/02/12 Python
Python Map 函数的使用
2020/08/28 Python
matplotlib事件处理基础(事件绑定、事件属性)
2021/02/03 Python
一款基于css3的列表toggle特效实例教程
2015/01/04 HTML / CSS
详解HTML5中div和section以及article的区别
2015/07/14 HTML / CSS
英国最大的电脑零售连锁店集团:PC World
2016/10/10 全球购物
国家税务局干部作风整顿整改措施
2014/09/18 职场文书
创先争优活动个人总结
2015/03/04 职场文书
Python中的 No Module named ***问题及解决
2022/07/23 Python