curl教程

概述

PHP支持的由Daniel Stenberg创建的libcurl库允许你与各种的服务器使用各种类型的协议进行连接和通讯。
libcurl目前支持http、https、ftp、gopher、telnet、dict、file和ldap协议。libcurl同时也支持HTTPS认证、HTTP POST、HTTP PUT、 FTP 上传(这个也能通过PHP的FTP扩展完成)、HTTP 基于表单的上传、代理、cookies和用户名+密码的认证。
PHP中使用cURL实现Get和Post请求的方法
这些函数在PHP 4.0.2中被引入。

定义

cURL 发音为[‘curl’],即Client URL(客户端URL)。
提供了一个库和命令行工具,是一个传输URL资源的工具,对 URL 进行操作。
任何和Internet协议(即TCP/IP协议)传输相关的业务都可以看做curl业务。
区别:
动词:to curl something ,使用非浏览器工具从URL下载文件或资源。
一种编程语言 CURL

组成

cURL包含两款产品:
libcurl:一个用C编写的免费的客户端URL传输库。通常和其他程序绑定使用,作为其他程序的开发库。
cURL:一个命令行工具(二进制可执行文件),底层使用libcurl,通过shell或者脚本调用,以实现使用URL语法获取或发送包含文件的数据。
支持的协议:
DICT,FILE,FTP,FTPS,GOPHER,HTTP,HTTPS,IMAP,IMAPS,LDAP,LDAPS,POP3,POP3S,RTMP,RTSP,SCP,SFTP,SMB,SMBS,SMTP,SMTPS,TELNET,TFTP
默认支持HTTPS并执行SSL证书验证。
使用:
cURL项目本身不提供curl的二进制可执行文件。因为命令行工具curl的使用依赖于具体系统。所以使用curl时往往需要去下载适用于特定系统的curl版本。
由于这些系统间有很多差异,因此curl可改造性很大(如容错性大,有时命令输错了,curl还是会执行)。
curl一般依赖于第三方的库,除非静态地使用curl命令。
curl将数据发送到stdout。

特点

基于TCP协议
只专注于传输,而不负责处理数据。如curl不理解HTML等的内容(不做渲染),但是可以通过HTTP协议传输它。

和浏览器的区别

curl客户端操作curl命令操作URL和浏览器操作URL的区别:
curl:只执行单行URL命令,对服务器返回的数据或消息不处理(如不渲染HTML页面,不重定向等)。
浏览器:功能更丰富,对服务器返回的数据做相应处理后呈现给用户。
如,浏览器会解析body部分,渲染出界面;同时还会通过一些链接和状态码重定向(如,在浏览器地址栏输入 baidu.com 后,浏览器可以根据服务器传回的消息重定向到www.baidu.com,直至可以得到一个可以呈现给用户的页面。而curl输入curl baidu.com,则只会得到服务器发回的重定向消息,不做下一步处理。

PHP curl函数

在这里插入图片描述

在这里插入图片描述
因为需要在 php 开发中对接其它接口需要用 php curl 去对接其它接口 我把他们封装成函数 希望能对大家有所帮助。
这里面是封装好的会自动把 data 进行转成 json 格式,同时解码成 php 数组输出。

<?php
function geturl($url){
        $headerArray =array("Content-type:application/json;","Accept:application/json");
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, $url);
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); 
        curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE); 
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        curl_setopt($ch,CURLOPT_HTTPHEADER,$headerArray);
        $output = curl_exec($ch);
        curl_close($ch);
        $output = json_decode($output,true);
        return $output;
}
function posturl($url,$data){
        $data  = json_encode($data);    
        $headerArray =array("Content-type:application/json;charset='utf-8'","Accept:application/json");
        $curl = curl_init();
        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, 1);
        curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
        curl_setopt($curl,CURLOPT_HTTPHEADER,$headerArray);
        curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
        $output = curl_exec($curl);
        curl_close($curl);
        return json_decode($outputtrue);
}


function puturl($url,$data){
    $data = json_encode($data);
    $ch = curl_init(); //初始化CURL句柄 
    curl_setopt($ch, CURLOPT_URL, $url); //设置请求的URL
    curl_setopt ($ch, CURLOPT_HTTPHEADER, array('Content-type:application/json'));
    curl_setopt($ch, CURLOPT_RETURNTRANSFER,1); //设为TRUE把curl_exec()结果转化为字串,而不是直接输出 
    curl_setopt($ch, CURLOPT_CUSTOMREQUEST,"PUT"); //设置请求方式
    curl_setopt($ch, CURLOPT_POSTFIELDS, $data);//设置提交的字符串
    $output = curl_exec($ch);
    curl_close($ch);
    return json_decode($output,true);
}

function delurl($url,$data){
    $data  = json_encode($data);
    $ch = curl_init();
    curl_setopt ($ch,CURLOPT_URL,$put_url);
    curl_setopt ($ch, CURLOPT_HTTPHEADER, array('Content-type:application/json'));
    curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt ($ch, CURLOPT_CUSTOMREQUEST, "DELETE");   
curl_setopt($ch, CURLOPT_POSTFIELDS,$data);
    $output = curl_exec($ch);
    curl_close($ch);
    $output = json_decode($output,true);
}

function patchurl($url,$data){
    $data  = json_encode($data);
    $ch = curl_init();
    curl_setopt ($ch,CURLOPT_URL,$url);
    curl_setopt ($ch, CURLOPT_HTTPHEADER, array('Content-type:application/json'));
    curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt ($ch, CURLOPT_CUSTOMREQUEST, "PATCH");  
    curl_setopt($ch, CURLOPT_POSTFIELDS,$data);     //20170611修改接口,用/id的方式传递,直接写在url中了
    $output = curl_exec($ch);
    curl_close($ch);
    $output = json_decode($output);
    return $output;
}
?>

这些是常用的curl函数
我们拿put函数来分析一下

function puturl($url,$data){
	//url路径  //data数据
    $data = json_encode($data); //将数组和对象,转换为json格式
    $ch = curl_init(); //初始化CURL句柄   初始化浏览器 开启会话
    curl_setopt($ch, CURLOPT_URL, $url);  //要访问的地址  设置浏览器 把参数url传到浏览器的设置当中
    //curl_setopt().设置属性 有一长串cURL参数可供设置,它们能指定URL请求的各个细节。
curl_setopt ($ch, CURLOPT_HTTPHEADER, array('Content-type:application/json'))
//设置header头传参以及设置Content-Type: application/json类型的后台数据接收 语言鉴别 数组可不设置类型
    curl_setopt($ch, CURLOPT_RETURNTRANSFER,1); //设为TRUE把curl_exec()结果转化为字符串,而不是直接输出 
    curl_setopt($ch, CURLOPT_CUSTOMREQUEST,"PUT"); //设置请求方式
    curl_setopt($ch, CURLOPT_POSTFIELDS, $data);//设置提交的字符串
    $output = curl_exec($ch); //执行并获取结果
curl_close($ch); //关闭curl浏览器 关闭会话
    return json_decode($output,true);// 具体看数据类型返回格式

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值