curl是最常用功能之一
初始化句柄
$ch = curl_init(); post 传$data
1. 如果$data是字符串,则Content-Type是application/x-www-form-urlencoded。
2、如果$data是k=>v的数组,则Content-Type是multipart/form-data,
,Coentent-Type仅在取值为application/x-www-data-urlencoded和multipart/form- data两种情况下,PHP才会将http请求数据包中相应的数据填入$_POST
,PHP不能识别的Content-Type类型的时候,会将http请求包中相应的数据填入变量$HTTP_RAW_POST_DATA
, 只有Coentent-Type不为multipart/form-data的时候,PHP不会将http请求数据包中的相应数据填入php: //input,其它情况都会。填入的长度由Coentent-Length指定。
,只有Content-Type为application/x-www-data-urlencoded时,php://input数据才 跟$_POST数据相一致。
,php://input数据总是跟$HTTP_RAW_POST_DATA相同,但是php://input 比$HTTP_RAW_POST_DATA更凑效,且不需要特殊设置php.ini
,PHP会将PATH字段的query_path部分,填入全局变量$_GET。通常情况下,GET方法提交的http请求,body为空。

编码设置
$header = array('Content-Type:application/x-www-form-urlencoded;charset=utf8');
curl_setopt($ch,CURLOPT_HTTPHEADER,$header); post方式
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data); 返回值
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1); 超时
curl_setopt($ch, CURLOPT_TIMEOUT, 20); 执行
curl_exec($ch); 是否有异常
if (curl_errno($ch)) 关闭
curl_close($ch);

一个实例,post数据到某短信端口:

/**
* $sender 发送人
*$reveivers 收信人手机号 数据格式
*$msg 短信内容
*sname 发送人姓名
*/
function send($sender,$receivers,$msg,$sname){ $tos = "";
foreach ($receivers as $v) { //将收信人转为以','分割的字符串
$tos .= $v.",";
} $userName = 'hnxxx**';
$pwd = 'fuckwl***';
$st = date('mdHis');   $post_data = array () ;
  $post_data['UserName'] = $userName;

  $post_data['Key'] = getKey($userName, $pwd, $st);
  $post_data['Timestemp'] = $st;
$post_data['Content'] = '【前缀】'.$msg;
$post_data['CharSet'] = 'utf-8';
$post_data['Mobiles'] = $tos;
$url = 'http://www.xxx.com:3070/Http_Service/SendSms';
$o = "" ;
foreach ( $post_data as $k => $v )
{
$o .= "$k=".urlencode($v)."&" ;
}
$post_data = substr($o, , -) ;

$curl = curl_init();
$header = array('Content-Type:application/x-www-form-urlencoded;charset=utf8');
curl_setopt($curl, CURLOPT_HTTPHEADER, $header);
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE);
curl_setopt($curl, CURLOPT_POST, );
curl_setopt($curl, CURLOPT_POSTFIELDS, $post_data);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, );
$result = curl_exec($curl);
if (curl_errno($curl)) {
echo 'Errno'.curl_error($curl);
}
curl_close($curl); echo $result;
echo $post_data; }

php curl那点事儿的更多相关文章

  1. Docker+.Net Core 的那些事儿-1.准备工作

    1.下载centos 地址:https://www.centos.org/download/ 我使用的是DVD ISO,这么做的目的是为了在之后的docker填坑的路上,方便使用centos中Fire ...

  2. Docker+.Net Core 的那些事儿-3.创建容器并运行

    1.根据镜像运行容器 上篇文章建立了一个镜像: 我们以此开始,执行以下命令: docker run -d -p 5000:5000 hwapp:latest 如果返回以上结果表示建立成功. 此时如果你 ...

  3. Mac安装Homebrew的那些事儿

    Mac安装Homebrew的那些事儿 最近小明刚换置了一个 Mac 本,想搭建一个属于自己的博客网站,需要用到 Node.js 环境,而Node.js 在 MacOS 中是由 Homebrew 进行安 ...

  4. 说说Makefile那些事儿

    说说Makefile那些事儿 |扬说|透过现象看本质 工作至今,一直对Makefile半知半解.突然某天幡然醒悟,觉得此举极为不妥,只得洗心革面从头学来,以前许多不明觉厉之处顿时茅塞顿开,想想好记性不 ...

  5. 在PowerShell中使用curl(Invoke-WebRequest)

    前言 习惯了windows的界面模式就很难转去命令行,甚至以命令行发家的git也涌现出各种界面tool.然而命令行真的会比界面快的多,如果你是一个码农. situation:接到需求分析bug,需要访 ...

  6. 总结iOS开发中的断点续传那些事儿

    前言 断点续传概述 断点续传就是从文件赏赐中断的地方重新开始下载或者上传数据,而不是从头文件开始.当下载大文件的时候,如果没有实现断点续传功能,那么每次出现异常或者用户主动的暂停,都会从头下载,这样很 ...

  7. setTimeout那些事儿

    一.setTimeout那些事儿之单线程 一直以来,大家都在说Javascript是单线程,浏览器无论在什么时候,都且只有一个线程在运行JavaScript程序. 但是,不知道大家有疑问没——就是我们 ...

  8. Javascript中关于cookie的那些事儿

    Javascript-cookie 什么是cookie? 指某些网站为了辨别用户身份.进行session跟踪而储存在用户本地终端上的数据(通常经过加密).简单点来说就是:浏览器缓存. cookie由什 ...

  9. php中实现的一个curl批处理的实例

    curl是利用URL语法在命令行方式下工作的开源文件传输工具 本文在php中实现了的一个curl批处理的实例. 代码如下: header("Content-Type:text/html;ch ...

随机推荐

  1. Websphere设置JVM时区解决程序、日志时间快8小时问题

    原文链接:http://www.itpub.net/thread-1204714-1-1.html 相信很多使用Websphere的朋友会经常在Windows操作系统中遇到程序时间快8小时的问题 如果 ...

  2. Elasticsearch5.2.2安装

    安装环境: 操作系统:centos 6.8 jdk版本:jdk1.8.0_121 应用版本:Elasticsearch 5.2.2 1.Elasticsearch5.2.2安装 (1)下载地址: wg ...

  3. Ubuntu 安装IntelliJ IDEA

    1. 下载IDEA    官网地中:http://www.jetbrains.com/idea/download/index.html    选择对应操作系统的版本.下载后,我的文件名称为: idea ...

  4. 实现linux服务器之间无密码互访

    最近老是在群里看到许多同学问,linux之间无密码互访怎么弄啊,百度的看得我头晕之类的,所以我就写写怎么样在两台linux服务器之间实现无密码互访,也就是让它们互相信任的意思,废话不多说,直接上菜. ...

  5. T4生成多文件时,不生成自己

    如:我用的网上的生成多文件的一个include文件. 生成多文件时,默认会生成一个以自己名字命名的文件如: 有一个demo.tt文件,生成时会出来一个demo.cs文件(默认情况下) 解决方法: Fo ...

  6. Docker命令之 save

    docker save : 将指定镜像保存成 tar 归档文件. 语法 docker save [OPTIONS] IMAGE [IMAGE...] OPTIONS说明: -o :输出到的文件. 实例 ...

  7. iOS :UIPickerView reloadAllComponets not work

    编辑信息页面用了很多选择栏,大部分都用 UIPickerView 来实现.在切换数据显示的时候, UIPickerView 不更新数据,不得其解.Google 无解,原因在于无法描述自己的问题,想想应 ...

  8. cocos2d - Changing the image of a CCSprite

    CCTexture2D* tex = [[CCTextureCache sharedTextureCache] addImage:@"new_image_name"]; [spri ...

  9. Nginx初入

    商城项目做了一个多月了,想到必须用到负载均衡,首先分享第一个demo,五月份上线后,会继续分享一系列相关知识. 在nginx根目录下,用了一个园友的批处理文件nginx.bat,用于启动和关闭ngin ...

  10. linux mount 挂接新硬盘

    1.先用fdisk -l查看一下,先加入的外设地址名称   2. #fdisk /dev/sdb进入fdisk模式:Command (m for help):p //查看新硬盘的分区Command ( ...