PHP 利用 curl 发送 post get del put patch 请求              参考地址   

PHP 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中被引入。


需求

为了使用PHP的cURL函数,你需要安装 » libcurl包。

PHP需要使用libcurl 7.0.2-beta 或者更高版本。在PHP 4.2.3 里使用cURL,你需要安装7.9.0或更高版本的libcurl。从PHP 4.3.0开始你需要安装7.9.0或更高版本的libcurl。从PHP 5.0.0开始你需要安装7.10.5或更高版本的libcurl。


安装

要使用PHP的cURL支持你必须在编译PHP时加上--with-curl[=DIR] 选项,DIR为包含lib和include的目录路径。在include目录中必须有一个名为curl,包含了easy.h和curl.h的文件夹。lib文件夹里应该有一个名为libcurl.a的文件。对于PHP 4.3.0你可以配置--with-curlwrappers 使cURL使用URL流。

注意: Win32用户注意 要在Windows环境下使用这个模块,libeay32.dll和ssleay32.dll必须放到PATH环境变量包含的目录下。 不用cURL网站上的libcurl.dll。


资源类型

这个扩展定义了2中资源:cURL句柄和cURL批处理句柄。


PHP cURL 函数

以下包含了PHP cURL函数列表:

函数 描述
curl_close() 关闭一个cURL会话。
curl_copy_handle() 复制一个cURL句柄和它的所有选项。
curl_errno() 返回最后一次的错误号。
curl_error() 返回一个保护当前会话最近一次错误的字符串。
curl_escape() 返回转义字符串,对给定的字符串进行URL编码。
curl_exec() 执行一个cURL会话。
curl_file_create() 创建一个 CURLFile 对象。
curl_getinfo() 获取一个cURL连接资源句柄的信息。
curl_init() 初始化一个cURL会话。
curl_multi_add_handle() 向curl批处理会话中添加单独的curl句柄。
curl_multi_close() 关闭一组cURL句柄。
curl_multi_exec() 运行当前 cURL 句柄的子连接。
curl_multi_getcontent() 如果设置了CURLOPT_RETURNTRANSFER,则返回获取的输出的文本流。
curl_multi_info_read() 获取当前解析的cURL的相关传输信息。
curl_multi_init() 返回一个新cURL批处理句柄。
curl_multi_remove_handle() 移除curl批处理句柄资源中的某个句柄资源。
curl_multi_select() 等待所有cURL批处理中的活动连接。
curl_multi_setopt() 设置一个批处理cURL传输选项。
curl_multi_strerror() 返回描述错误码的字符串文本。
curl_pause() 暂停及恢复连接。
curl_reset() 重置libcurl的会话句柄的所有选项。
curl_setopt_array() 为cURL传输会话批量设置选项。
curl_setopt() 设置一个cURL传输选项。
curl_share_close() 关闭cURL共享句柄。
curl_share_init() 初始化cURL共享句柄。
curl_share_setopt() 设置一个共享句柄的cURL传输选项。
curl_strerror() 返回错误代码的字符串描述。
curl_unescape() 解码URL编码后的字符串。
curl_version() 获取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($url,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($output,true);
}function puturl($url,$data){$data = json_encode($data);$ch = curl_init(); //初始化CURL句柄 curl_setopt($ch, CURLOPT_URL, $url); //设置请求的URLcurl_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;
}
?>

PHP多线程请求

$baseUrl = "https://api.sendgrid.com";
//获取所有bounces
$headers[]  =  "Accept:application/json";
$headers[]  =  "Authorization: Bearer ". $apiKey;
$bouncesUrl = $baseUrl."/v3/suppression/bounces?";$start =  "1648137600";   //2022.03.25:1648137600
$end =  "1648396800";  //2022.03.26:1648224000     3.27:1648310400   3.28:1648396800
$limit = 5;
$offset=0;
$result = [];
//do{$query1 = ["start_time" => $start,"end_time" => $end,"limit" => $limit,"offset" => $offset];$query2 = ["start_time" => $start,"end_time" => $end,"limit" => $limit,"offset" => $offset+5];$query3 = ["start_time" => $start,"end_time" => $end,"limit" => $limit,"offset" => $offset+10];
//    $data = curl_get($bouncesUrl.http_build_query($query),$headers);  //220条数据,与sendgrid后台数据一致$urls = array($bouncesUrl.http_build_query($query1),$bouncesUrl.http_build_query($query2),$bouncesUrl.http_build_query($query3),);//1.初始化一个批处理handle$mh = curl_multi_init();//2.往批处理handle添加curl_init的子handleforeach ($urls as $i => $url) {$conn[$i] = curl_init($url);curl_setopt($conn[$i], CURLOPT_SSL_VERIFYHOST, 0);curl_setopt($conn[$i], CURLOPT_SSL_VERIFYPEER, 0);curl_setopt($conn[$i], CURLOPT_HEADER ,0);curl_setopt($conn[$i], CURLOPT_HTTPHEADER, $headers);curl_setopt($conn[$i], CURLOPT_CONNECTTIMEOUT,60);curl_setopt($conn[$i],CURLOPT_RETURNTRANSFER,true); // 不将爬取代码写到浏览器,而是转化为字符串curl_multi_add_handle ($mh,$conn[$i]);}//3.并发执行,直到全部结束do {curl_multi_exec($mh,$active);//当无数据,active=true} while ($active);//4.获取结果foreach ($urls as $i => $url) {$data = curl_multi_getcontent($conn[$i]);//获得返回信息$result = array_merge($result,$data);}//5.移除子handleforeach ($urls as $i => $url) {curl_multi_remove_handle($mh,$conn[$i]);curl_close($conn[$i]);}//6.关闭批处理handlecurl_multi_close($mh);echo count($data);print_r($data);

PHP 利用 curl 发送 post get del put patch 请求相关推荐

  1. php curl发送post请求失败,php 利用curl发送post请求

    利用curl发送post请求完成数据,接口的访问,这里面的参数可以修正一下,就可以写成可以支持文件上传的一个post请求,但是我这里不做仔细的写了.等以后有时间了在考虑怎么分解这个方法: /** * ...

  2. 利用WebClient发送一个简单的HTTP GET请求并且取回响应

    问题 如何发送一个简单的HTTP GET请求并且取回相应的HTTP响应. 设计 创建一个WebClient类的实例,然后使用它的DownloadData()方法. 方案 string uri = &q ...

  3. 用php批处理图片,PHP中使用CURL发送get/post请求上传图片批处理功能

    cURL是利用url语法规定传输文件和数据的工具.php中有curl拓展,一般用来实现网络抓取,模拟发送get   post请求,文件上传. 在php中建立curl的基本步骤如下: 1.初始化 2. ...

  4. php curl post上传图片,PHP中使用CURL发送get/post请求上传图片批处理功能

    cURL是利用url语法规定传输文件和数据的工具.php中有curl拓展,一般用来实现网络抓取,模拟发送get   post请求,文件上传. 在php中建立curl的基本步骤如下: 1.初始化 2. ...

  5. php 中使用cURL发送get/post请求,上传图片,批处理

    https://mp.weixin.qq.com/s/8luqMEd8xt8oJxFLLCU1XA 文章正文 cURL是利用url语法规定传输文件和数据的工具.php中有curl拓展,一般用来实现网络 ...

  6. php curl登陆邮箱,php利用CURL函数登入163邮箱并获取自己的通讯录

    我们使用phpmailer登录邮件发邮件也是使用了curl原理来实现模仿用户发邮件了,今天看了两个利用CURL函数登入163邮箱并获取自己的通讯录的例子,希望对各位有帮助. 学习了一些CURL的基础知 ...

  7. php抓取curl下载文件,PHP 利用 Curl 函数实现多线程抓取网页和下载文件

    PHP 利用 Curl Functions 可以完成各种传送文件操作,比如模拟浏览器发送GET,POST请求等等,然而因为php语言本身不支持多线程,所以开发爬虫程序效率并不高,因此经常需要借助Cur ...

  8. PHP爬取post网页数据,php curl发送post请求爬取webService接口数据简单实例

    header('Content-Type: text/html;charset=utf-8'); /** * 使用curl发送post请求 * @param $url * @param string ...

  9. php 如何发送json数据格式,Php如何使用curl发送json格式数据实例

    Php 如何使用curl发送json格式数据实例 Php 如何使用curl发送json格式数据实例 这篇文章主要介绍了php使用curl发送json格式数据的实例,大家参考使用吧 代码如下: $url ...

最新文章

  1. usr share里没有mysql_无法在ubuntu 12.04上安装mysql,找不到消息文件’/usr/share/mysql/errmsg.sys’...
  2. linux 设备管理工具 udev 规则编写
  3. mongodb数据库显示obj_MongoDB基础(三)—基本操作及管理 | leon的博客
  4. RetinaFace Mxnet转TensorRT
  5. Docker核心技术 1
  6. Spring Cloud——Spring Cloud Alibaba 2021 Nacos Config bootstrap 配置文件失效解决方案
  7. 11. 列表标签及其应实例
  8. opencv Hog Demo
  9. 95-33-020-ChannelHandler-ChannelHandler简介
  10. caffe-yolov3:编译安装报错:fatal error: caffe/caffe.hpp: No such file or directory
  11. ClamAV学习【6】—— cli_load函数浏览
  12. Codeforces Round 258(Div. 2)
  13. layui的layer弹出层和form表单
  14. 服务器 raid配置
  15. 一位计算机专业硕士毕业生的求职经历和感想
  16. EF Core学习之路02
  17. Python的mpl_finance模块从2020年已经提醒弃用,新mplfinance模块详解(一)
  18. ICP经营许可证需要多久能够下证
  19. 网格设计版式设计_网页设计展示精美的版式
  20. echarts设置x轴字体不同颜色

热门文章

  1. 用c语言编程矩阵乘法,c语言矩阵相乘
  2. lambda也是python_Python lambda介绍
  3. python求不规则图形面积_python 微积分之---黎曼和
  4. 二十四、爬取古诗网中的100首古诗文
  5. excel中的vlookup函数
  6. 直播 | AAAI 2022论文解读:三⻆分解一致性约束的端到端语音翻译
  7. 浅谈问题生成(Question Generation)
  8. 30万奖金海华AI挑战赛 | 用机器挑战中文阅读理解
  9. 赠书福利 | 首本理论和实战结合的深度学习书籍
  10. Byte Cup 2018国际机器学习竞赛夺冠记