5、什么是CURL?

在PHP中,CURL并不是一个函数,而是一组系列函数,它主要用于模拟HTTP请求,常用于发送API接口请求,
虽然可以使用file_get_content()函数也可以发送HTTP请求,但是CURL支持设置cookie信息,设置浏览器动词,设置请求类型,自定义请求头等。
总结,CURL可以细化HTTP请求,而file_get_content()函数只能简单的发起请求。

6、CURL的组合步骤

使用PHP进行CURL组合,完成一个HTTP请求的发送一般由以下几个步骤所组成:

  1. 1、初始化连接句柄;
  2. 2、设置CURL选项;
  3. 3、执行并获取结果;
  4. 4、释放CURL连接句柄。

7、CURL的5大函数介绍

以下5大函数,在CURL中最为常用,通常一个CURL连接,都是由这些函数所组成:

1、curl_init(),初始化连接句柄。
2、curl_setopt(),设置各类请求参数,例如:请求类型,自定义请求头等。
3、curl_exec(),发送CURL请求,并获得返回值。
4、curl_error(),获得CURL发送请求后的错误信息。
5、curl_close(),释放CURL连接句柄。

同时,CURL还有一个助手函数,是用于获得CURL的输出信息:curl_getinfo()
该函数的返回值是一个一维数组,其参数列表如下:

参数 解释
url 网络地址
content_type 内容编码
http_code HTTP状态码
header_size header的大小
request_size 请求的大小
filetime 文件创建的时间
ssl_verify_result SSL验证结果
redirect_count 跳转计数
total_time 总耗时
namelookup_time DNS查询耗时
connect_time 等待连接耗时
pretransfer_time 传输前准备耗时
size_uplpad 上传数据的大小
size_download 下载数据的大小
speed_download 下载速度
speed_upload 上传速度
download_content_length 下载内容的长度
upload_content_length 上传内容的长度
starttransfer_time 开始传输的时间表
redirect_time 重定向耗时

8、curl_setopt()函数详解

在以上的6个函数中,除了初始化连接句柄不需要传递参数外,其他参数都需要传递参数,
而其他函数,除了curl_setopt()函数外,都只需要传递连接句柄的实例即可。
下面我们就来对这个curl_setopt()函数进行详细讲解。
curl_setopt()函数主要用于设置请求信息,该函数的参数格式如下:

curl_setopt(连接句柄, 系统参数变量, 对应参数);

在PHP中,CURL对应的系统参数变量多达上百个,我们只需要懂得其中一些常用的即可,
其他的可以参考官方文档:http://www.php.net/manual/zh/function.curl-setopt.php。
这些常用的系统参数变量中,以下这些在API请求中是必备的参数:
系统参数名 解释 参数内容
CURLOPT_URL 设置API请求地址 例如:http://api.junphp.com/v1/zoos
CURLOPT_RETURNTRANSFER curl_exec()执行成功后,是否直接输出返回值,然后返回TRUE true关闭输出,返回回调内容;false直接输出,返回true
CURLOPT_HEADER curl_exec()执行成功后,回调内容中是否需要携带HTTP投保信息 true是;false否
CURLOPT_POST 是否发送POST请求 true为POST,false为GET
CURLOPT_POSTFIELDS 当设置请求类型为POST时,请求携带的提交内容 该参数是一个数组,可以是多维数组;注意,如果我们设置请求头中数据提交类型为XML,则是一段XML格式的字符串
CURLOPT_TIMEOUT 一个请求最长等待多少秒,因为实际开发中,我们不可能无限的等待请求回调,如果请求一直不回调,我们一直在等待,这是不合理的 例如:60;注意该参数只能是整型数据类型。
CURLOPT_SSL_VERIFYPEER 对HTTPS协议的网址发送请求时,是否需要验签 true为需要,false不需要;注意该参数如果是请求HTTP的网址,不需要设置,如果是HTTPS,通常设置为false
CURLOPT_SSL_VERIFYSTATUS HTTPS证书状态 该参数与CURLOPT_SSL_VERIFYPEER的参数保持一致
CURLOPT_HTTPHEADER 设置请求头 该参数是个一维数组,例如:[‘Access-token:zxc’, ‘Sign:123’],不需要键对值。
CURLOPT_COOKIE 携带的COOKIE信息 cookie的信息
CURLOPT_CUSTOMREQUEST 携带请求的HTTP动词 例如:PUT、PATCH、DELETE