/**
* @desc curl request请求
* @date 2016-12-07 16:26:55
*
* @param $arguments
*
* @return bool|mixed
*
* @internal param 请求的url $url
* @internal param int|post为1 $ispost
* @internal param array|参数 $params
* @internal param string|请求的头部数据 $header
* @internal param string|请求的cookie数据 $cookie
* @internal param bool|请求数据错误是否返回获取的数据 $source
*
*/
function curlRequest($arguments = array())
{
$url = $arguments['url'];
$ispost = isset($arguments['ispost']) ? $arguments['ispost'] : 0;
$params = isset($arguments['params']) ? $arguments['params'] : array();
$header = isset($arguments['header']) ? $arguments['header'] : "";
$cookie = isset($arguments['cookie']) ? $arguments['cookie'] : "";
$source = isset($arguments['source']) ? $arguments['source'] : TRUE; $ch = curl_init($url);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); // 对认证证书来源的检查
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE); // 从证书中检查SSL加密算法是否存在
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE); // 将curl_exec()获取的信息以文件流的形式返回,而不是直接输出。
curl_setopt($ch, CURLOPT_TIMEOUT, 30); //设置cURL允许执行的最长秒数 30s
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 10); // 在发起连接前等待的时间,如果设置为0,则无限等待。
curl_setopt($ch, CURLOPT_HEADER, $header); // 设置请求头部header数据 // post and 参数
if ($ispost) {
curl_setopt($ch, CURLOPT_POST, TRUE); // 是否使用post方式请求
curl_setopt($ch, CURLOPT_POSTFIELDS, $params); // post 请求数据
curl_setopt($ch, CURLOPT_URL, $url);
} else {
if ($params) {
if (is_array($params)) {
$params = http_build_query($params);
}
curl_setopt($ch, CURLOPT_URL, $url . '?' . $params);
} else {
curl_setopt($ch, CURLOPT_URL, $url);
}
} // 设置cookie
if ($cookie) {
curl_setopt($ch, CURLOPT_COOKIE, $cookie);
} //抓取URL并把它传递给浏览器
$result = curl_exec($ch);
//var_dump($result);
// 为false 说明curl错误
if($result === false) {
$result = 'ERROR(CURL): ['.curl_errno($ch) . ']' . curl_error($ch);
} //获取执行后的 http 状态码
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
if ($httpCode != 200 && !$source) { // 非200说明异常
$result = FALSE;
} // [DEBUG]获取执行后的 http 头部Header
if ($httpCode != 200 && isset($_GET['debug'])) {
$httpInfo = curl_getinfo($ch);
echo '<pre>' . print_r($httpInfo, true) . '</pre>' . PHP_EOL;
} curl_close($ch); // 关闭cURL资源,并且释放系统资源 return $result;
}

php curl request的更多相关文章

  1. curl命令访问域名

    1.前言 curl是利用URL语法在命令行方式下工作的开源文件传输工具(来自百度百科).cURL 是一种简单有效的工具,可以使用cURL工具进行WEB相关的调试开发工具,相对于Yeelink这样的云平 ...

  2. curl 命令-接口测试

    在linux/Unix 为代表的os上, 对后端进行测试, 模拟连接请求都会书写脚本 场景: 在Linux 上接口测试工具有ab, restClient, postman等, 最常用的方法是curl进 ...

  3. curl tutorial with examples of usage

    原文:http://www.yilmazhuseyin.com/blog/dev/curl-tutorial-examples-usage/ 阮一峰的这个教程也不错:http://www.ruanyi ...

  4. curl 知识点

    curl :command line tool and library for transferring data with URLs curl 命令,常用缩写: curl 命令 缩写 说明 curl ...

  5. PHP通过curl模拟POST上传文件,5.5之前和之后的区别

    首先先要着重提一下,只要是做和项目有关的开发,首先按把环境中各个服务的版本保持一致,否则出些莫名其妙的错我,让你百爪挠心却不知哪里的问题.这里就要说下curl_setopt($ch, CURLOPT_ ...

  6. DIY远程移动图像监测(tiny6410+USB摄像头+motion+yeelink+curl)

    看到有博客上采用motion搭建移动图像监测系统,感觉很强大,但大多缺少远程监测能力,大多局限于局域网.OK,笔者手头刚好有一个30W像素的USB摄像头,那么借用yeelink服务,也来DIY一把,哈 ...

  7. DIY远程控制开关(tiny6410+LED+yeelink+curl)

    上一次,介绍了如何实现远程监控室内温度,大家伙反响还是很热烈的,笔者很欣慰,独乐乐不如众乐乐啊.不过话说回来,那个实现只能是远程监测家中温度,假如发现家里热得很,想远程打开空调开关提前降降温,回家后不 ...

  8. DIY远程监控室内温度设备(tiny6410+ds18b20+yeelink+curl)

    春节了,趁着假期的空闲时间,抽空捣鼓了下tiny6410开发板,发现这个东东尘封许久,很长时间没用过了.貌似最近物联网大热,谷歌收购Nest,其设计的恒温器能够智能调节和远程控制房间的温度,UI和设计 ...

  9. linux使用curl命令行进行接口测试

    cURL介绍cURL 是很方便的Rest客戶端,可以很方便的完成许多Rest API测试的需求,甚至,如果是需要先登入或认证的rest api,也可以進行测试,利用curl指令,可以送出HTTP GE ...

随机推荐

  1. C# 之 用NPOI类库操作Excel

    1.需引用以下命名空间: using NPOI.HSSF.UserModel; using NPOI.SS.UserModel; using NPOI.HPSF; using NPOI.HSSF.Ut ...

  2. SQL Server 中添加用户

    在对象资源管理器中点击安全性,选择登录名-新建登录名

  3. 我的开发框架(WinForm)

    近来,看园子里,好多同学,展示自己工作中的开发框架,有的功能强大,有的短小精悍,我也来凑个热闹,望各位大侠指点一二. 一.指导思想 1.尽量减少程序员对数据库的依赖,或者说尽力少的写sql 语句.根据 ...

  4. 深入理解计算机系统第二版习题解答CSAPP 2.15

    只使用位级运算和逻辑运算,编写一个C表达式,它等价于x==y.换句话说,当x和y相等时它将返回1,否则就返回0. !(x ^ y)

  5. jquery checkbox的判断和设置方法

    jquery的操作复选框偶尔能用到,每次都是百度去查,不得不说现在百度的搜索真的很垃圾,好多特别老的文章都排在前面,想要甄别出有用的东西挺费劲.脑子又记不住这么多东西,好记性不如烂笔头,还是记下来吧 ...

  6. linux 软件安装各种方法

    一   简单介绍 1.软件安装卸载,分几种情况: A:RPM包 这种软件包就像windows的EXE安装文件一样,各种文件已经编译好,并打了包,哪个文件该放到哪个文件夹,都指定好了,安装非常方便,在图 ...

  7. 关于Struts2中的值栈与OGNL表达式

    1.1.1    OGNL概述: Object Graphic Navigation Language(对象图导航语言)的缩写 * EL     :OGNL比EL功能强大很多倍. 它是一个开源项目. ...

  8. Javascript实现图片无缝滚动

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  9. centos vim 中文乱码解决方案

    1.安装中文包:yum -y groupinstall chinese-support   2.修改字符编码配置文件 vi /etc/sysconfig/i18n LANGUAGE="zh_ ...

  10. PHP自动化测试

    参考网址: 1. 基于Jenkins 实现php项目的自动化测试.自动打包和自动部署 2.  PHP Jenkins,参考:http://jenkins-php.org/ 3.安装PHP_CodeSn ...