使用cURL实现Get和Post请求的方法
cURL 是一个利用 URL 语法规则来进行传输文件和数据的工具。PHP 也支持 cURL 库。
在 PHP 中建立 cURL 请求的基本步骤
- 初始化 curl_init()
- 设置变量 curl_setopt()
- 执行并获取结果 curl_exec()
- 释放 cURL 句柄 curl_close()
1 | /** |
上述四个步骤中, 其中第二步最为关键, 可以设置一些高级选项 :
设置请求地址:
curl_setopt($ch, CURLOPT_URL, $url);由于 https 协议会对数据进行加密处理, 需要服务器配置证书. 设置 curl 不要对证书进行验证:
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CHRLOPT_SSL_VERIFYHOST, false);curl_exec($ch)直接输出对应URL返回的数据, 字符串格式, 如果发生错误, 则返回false. (判断是否false使用===全等), 所以我们要设置获取的信息以文件流的形式返回, 而不是直接输出浏览器:
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true)以 POST 的方式发起请求
curl_setopt($ch, CURLOPT_POST, 1);发送请求, POST 格式, $data就是发送的数据
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
curl 通过 CURLFile 类实现文件数据的读取。注意: CURLFile 在 php5.5 版本以上使用
$file = new CURLFile(文件的绝对路径);
返回一个对象 :
1 | object(CURLFile)#1 (3) { ["name"]=> string(15) "./黑天鹅.jpg" ["mime"]=> string(0) "" ["postname"]=> string(0) "" } |
cURL 上传文件
PHP 使用 CURL 上传文件只需发送一个 POST 请求就可以了,在请求中设置某个字段为需要上传的文件全路径,并且以“@”开头,然后使用 CURL 把该变量以 POST 方式发送到服务器,在服务端即可以从超级全局变量$_FILES 中取到相应的上传文件信息。
如果使用了-F 参数,curl 会以 multipart/form-data 的方式发送 POST 请求。-F 以 key=value 的形式指定要上传的参数,如果是文件,则需要使用 key=@file 的形式