1、cURL简介
curl(CommandLine Uniform Resource Locator)是利用URL语法在命令行方式下或脚本中工作的开源文件传输工具。其支持的协议有DICT, FILE, FTP, FTPS, Gopher, HTTP, HTTPS, IMAP, IMAPS, LDAP, LDAPS, POP3, POP3S, RTMP, RTSP, SCP, SFTP, SMB, SMBS, SMTP, SMTPS, Telnet ,TFTP。广泛应用在汽车、手机、路由、打印机等设备中。
深入了解具体可查看:官方文档
2、php中使用cURL建立请求
PHP也支持 cURL 库,建立请求的基本步骤:
2.1. 初始化
$ch = curl_init()
2.2.设置变量
curl_setopt() //最为重要。有一长串cURL参数可供设置,它们能指定URL请求的各个细节。
eg:
curl_setopt($ch,CURLOPT_URL,$url); //$url = "请求的url"
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,0);
curl_setopt($ch,CURLOPT_SSL_VERIFYHOST,0);
curl_setopt($ch,CURLOPT_HEADER,0);
post请求还需设置:
curl_setopt($ch, CURLOPT_POST,1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data); //$data为post的数据
2.3.执行并获取结果
$result = curl_exec($ch) //执行并获取结果
2.4.释放cURL句柄
curl_close()
3、实例
比如:在微信中发送模板消息:
<?php
$templateArr = array(
"touser" => "oVpDmw8kFezOHOBlJw32sIowXPzk",
"template_id" => "2JTIAclywfVK7CUST7zSjMwkkEtEGUWLyslMOaDqGls",
"url" => "http://weixin.qq.com/download",
"data"=>[
"first" => [
"value"=>"恭喜你购买成功!",
"color"=>"#173177"
],
"keyword1"=>[
"value"=>"巧克力",
"color"=>"#173177"
],
"keyword2"=> [
"value"=>"39.8元",
"color"=>"#173177"
],
"keyword3"=> [
"value"=>"2014年9月22日",
"color"=>"#173177"
],
"remark"=>[
"value"=>"欢迎再次购买!",
"color"=>"#173177"
]
]
);
$accessToken = "WiWhMpImqsOY_CbDkFWhKYqVjcLQFoOdgof0-bHDjm1WK2AdJ2566tO_NSkjx76t02CrDiChYvMuaRrvn7vQpbQEOIV7lMyDXYYVhq_JhDkuoTP3p0HYGER_TbDDBcNIOZVcADAVGC";
$url = 'https://api.weixin.qq.com/cgi-bin/message/template/send?access_token='.$accessToken;
//调用方法发送post请求并拿到结果
$result = curl_request($url,'post',json_encode($templateArr,JSON_UNESCAPED_UNICODE));
//打印结果
var_dump($result);
//get、post数据方法
function curl_request($url, $type = "GET", $data){
$ch = curl_init();
curl_setopt($ch,CURLOPT_URL,$url);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,0);
curl_setopt($ch,CURLOPT_SSL_VERIFYHOST,0);
curl_setopt($ch,CURLOPT_HEADER,0);
$type = strtolower($type);
switch ($type){
case 'get':
break;
case 'post':
//post请求配置
curl_setopt($ch, CURLOPT_POST,1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
break;
}
$result = curl_exec($ch);
curl_close($ch);
return $result;
}