php curl request
/**
* @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的更多相关文章
- curl命令访问域名
1.前言 curl是利用URL语法在命令行方式下工作的开源文件传输工具(来自百度百科).cURL 是一种简单有效的工具,可以使用cURL工具进行WEB相关的调试开发工具,相对于Yeelink这样的云平 ...
- curl 命令-接口测试
在linux/Unix 为代表的os上, 对后端进行测试, 模拟连接请求都会书写脚本 场景: 在Linux 上接口测试工具有ab, restClient, postman等, 最常用的方法是curl进 ...
- curl tutorial with examples of usage
原文:http://www.yilmazhuseyin.com/blog/dev/curl-tutorial-examples-usage/ 阮一峰的这个教程也不错:http://www.ruanyi ...
- curl 知识点
curl :command line tool and library for transferring data with URLs curl 命令,常用缩写: curl 命令 缩写 说明 curl ...
- PHP通过curl模拟POST上传文件,5.5之前和之后的区别
首先先要着重提一下,只要是做和项目有关的开发,首先按把环境中各个服务的版本保持一致,否则出些莫名其妙的错我,让你百爪挠心却不知哪里的问题.这里就要说下curl_setopt($ch, CURLOPT_ ...
- DIY远程移动图像监测(tiny6410+USB摄像头+motion+yeelink+curl)
看到有博客上采用motion搭建移动图像监测系统,感觉很强大,但大多缺少远程监测能力,大多局限于局域网.OK,笔者手头刚好有一个30W像素的USB摄像头,那么借用yeelink服务,也来DIY一把,哈 ...
- DIY远程控制开关(tiny6410+LED+yeelink+curl)
上一次,介绍了如何实现远程监控室内温度,大家伙反响还是很热烈的,笔者很欣慰,独乐乐不如众乐乐啊.不过话说回来,那个实现只能是远程监测家中温度,假如发现家里热得很,想远程打开空调开关提前降降温,回家后不 ...
- DIY远程监控室内温度设备(tiny6410+ds18b20+yeelink+curl)
春节了,趁着假期的空闲时间,抽空捣鼓了下tiny6410开发板,发现这个东东尘封许久,很长时间没用过了.貌似最近物联网大热,谷歌收购Nest,其设计的恒温器能够智能调节和远程控制房间的温度,UI和设计 ...
- linux使用curl命令行进行接口测试
cURL介绍cURL 是很方便的Rest客戶端,可以很方便的完成许多Rest API测试的需求,甚至,如果是需要先登入或认证的rest api,也可以進行测试,利用curl指令,可以送出HTTP GE ...
随机推荐
- SQL书写技巧
SQL书写技巧: 1.针对分区表,如果可以使用分区条件的,一定要加分区条件.分区条件的使用,可以减少不必要的数据访问,加快查询数据,如TB_CSV_ACCEPT_FLOW_OPERATOR表,以acc ...
- 【分享】4412开发板-嵌入式Linux开发须要掌握的基础知识和技能
本文转自迅为电子论坛:http://www.topeetboard.com 1.Linux 基础 安装Linux操作系统 Linux文件系统 Linux经常使用命令 Linux启动过程具体解释 熟悉L ...
- php开启新的进程或者线程
开启线程: $php_cli_path = '/usr/bin/php';$dir_path = dirname(__FILE__)."/".'CheckTaskState.she ...
- Android4.4 + WebAPI 实现拍照上传
网上有很多关于拍照上传的实现方法,如果用新版本android去运行有可能会发现根本实现不了.主要原因是android从4.4版本开始通过intent.ACTION_GET_CONTENT打开选择器后, ...
- Android开发环境搭建完全图解(转)
本文介绍从0开始,在Linux系统下,搭建一个Android开发环境的方法. 如果你是<Learning Android>这本书的读者,你也可以参考这篇文章,因为这篇文章是以书中的安装方法 ...
- 全新的手势,侧滑返回、全局右滑返回都OUT啦!
前言 Android快速开发框架-ZBLibrary 最近将以前的 全局右滑返回 手势功能改成了 底部左右滑动手势. 为什么呢?为了解决滑动返回手势的问题. 目前有3种滑动返回手势 一.侧滑返回 代表 ...
- boot2docker安装及使用
更新homebrew 为了确保有boot2docker的安装脚本 brew update 安装boot2docker brew install boot2docker 初始化 boot2docker ...
- ios定制中间突出的tabBar
我觉得有两个思路,一个是自己写tabBar 通过自定义实现,缺点呢就是比较麻烦,优点就是代码比较清楚,而且比较稳定. 另一个思路就是写个大按钮加在tabBar上 通过监听tabitem的点击来实现相 ...
- CyclicBarrier 使用说明
字面意思回环栅栏,通过它可以实现让一组线程等待至某个状态之后再全部同时执行.叫做回环是因为当所有等待线程都被释放以后,CyclicBarrier可以被重用. 主要方法: public i ...
- 【转】android自动化测试之MonkeyRunner使用实例(三)
一.使用CMD命令打开模拟器 运行monkeyrunner之前必须先运行相应的模拟器或连上设备,不然monkeyrunner无法连接设备. 1.1 用Elipse打开Android模拟器或在CMD中 ...