curl模拟请求常用参数
封装一个curl模拟浏览器请求的函数,如下:
/**
* curl模拟浏览器请求
* @param unknown $url 请求的地址
* @param array $params 请求地址所需要的参数
* @param string $method 请求的类型
* @param array $headers http请求头
* @return string|mixed
*/
function curlRequest($url, array $params, $method='POST', array $headers=array())
{
// 1.初始化一个curl会话资源
$ch = curl_init(); // 2.设置curl会话的选项
curl_setopt($ch, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_0); // 强制使用 HTTP/1.0
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, ); // 发起连接前等待超时的时间,如果设置为0,则无限等待
curl_setopt($ch, CURLOPT_TIMEOUT, ); // 设置curl允许执行的最长秒数
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); // 是否将curl_exec()获取的信息返回,而不是直接输出
curl_setopt($ch, CURLOPT_ENCODING, 'gzip'); // 设置HTTP请求头中"Accept-Encoding: "的值
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); // 启用时会将服务器返回的"Location: "放在header中递归的返回给服务器
curl_setopt($ch, CURLOPT_MAXREDIRS, ); // 设置HTTP重定向的最大数量,这个选项是和CURLOPT_FOLLOWLOCATION一起使用的
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); // 是否需要进行服务端的SSL证书验证
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); // 是否验证服务器SSL证书中的公用名
curl_setopt($ch, CURLOPT_HEADER, false); // 是否抓取头文件的信息
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); // 设置HTTP请求头
curl_setopt($ch, CURLINFO_HEADER_OUT, true); switch (strtoupper($method)) {
case 'POST':
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $params);
break; case 'GET':
$url = "{$url}?" . http_build_query($params);
break; case 'DELETE':
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'DELETE');
$url = "{$url}?" . http_build_query($params);
break; default:
return 'invalid request method';
} curl_setopt($ch, CURLOPT_URL, $url); // 设置需要请求的URL地址,也可以在 curl_init()函数中设置 // 3.执行curl会话
$response = curl_exec($ch); // 4.关闭curl会话,释放资源
curl_close($ch); return $response;
} 函数调用方式如下:
$url = 'http://demo.dev/test';
$params = array('id'=>,'name'=>'zpt');
$res = curlRequest($url,$params);
echo $res;
curl模拟请求常用参数的更多相关文章
- thinkphp模拟请求和参数绑定
thinkphp模拟请求和参数绑定 一.总结 1.网页传过来的参数是可以修改的:get或者post等方式 传过来的参数是可以修改的 dump($request->get(['id'=>2 ...
- 通过PHP CURL模拟请求上传文件|图片。
现在有一个需求就是在自己的服务器上传图片到其他服务器上面,过程:客户端上传图片->存放到本地服务器->再转发到第三方服务器; 由于前端Ajax受限制,只能通过服务器做转发了. 在PHP中通 ...
- 转载:curl 模拟请求
一般情况下我们会在网页上请求后台接口,但是对于需要进行多次测试的人来说,每一次都要在网页上模拟请求,是存在很大局限性的.因此,我们需要学会模拟请求,以达到跟实际请求一样的效果. 1. curl的用法 ...
- curl 模拟请求
https://www.jianshu.com/p/7965c56c5a2e ********************************************* 一般情况下我们会在网页上请求后 ...
- requeests模块请求常用参数的写法整理
主要是针对写法 一.requests.get requests.get是调用了requests.request('get', url, params=params, **kwargs) 1.url 协 ...
- curl 模拟请求get/post
$url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=wx24a0ef ...
- curl模拟请求
GET请求 <?php //初始化 $curl = curl_init(); //设置抓取的url curl_setopt($curl, CURLOPT_URL, 'http://www.bai ...
- php中curl模拟post提交多维数组(转载)
原文地址:http://www.cnblogs.com/mingaixin/archive/2012/11/09/2763265.html 今天需要用curl模拟post提交参数,请求同事提供的一个接 ...
- CURL 常用参数
在Linux中curl是一个利用URL规则在命令行下工作的文件传输工具,可以说是一款很强大的http命令行工具. 1.查看响应头信息: -I :显示http response的头信息. [root@l ...
随机推荐
- 从零起步做到Linux运维经理, 你必须管好的23个细节
“不想成为将军的士兵,不是好士兵”-拿破仑 如何成为运维经理? 一般来说,运维经理大概有两种出身:一种是从底层最基础的维护做起,通过出色的维护工作,让公司领导对这个人非常认可,同时对Linux运维工作 ...
- django查询数据库无法过滤月份的解决
我试过,当settings里的:USE_TZ = False时也可以查询,但是数据库里的时间就会显示错的 解决方法是可以再终端输入 mysql_tzinfo_to_sql /usr/share/zon ...
- Java学到什么程度才能叫精通?
把下面这些内容掌握以后,你就可以自诩精通Java后端了. 1 计算机基础 这部分内容是计算机相关专业同学的课程,但是非科班的小伙伴(譬如在下)就需要花时间恶补了. 特别 是计算机网络,操作系统 ...
- Android JNI 学习(十):String Operations Api & Other Apis
一.String Operations(字符串操作) 1. NewString jstring NewString(JNIEnv *env, const jchar *unicodeChars, js ...
- 吴恩达机器学习笔记44-核函数(Kernels)
回顾我们之前讨论过可以使用高级数的多项式模型来解决无法用直线进行分隔的分类问题: 为了获得上图所示的判定边界,我们的模型可能是
- HTML5与CSS3权威指南笔记案例1
第1章 <!DOCTYPE html> <meta charset = "UTF-8"> <title> Search </title&g ...
- itext实现pdf自动定位合同签订
需求 需要实现如下效果(最终效果) 思考 需求方的要求就是实现签订合同,实现方法不限,但过程中又提出需要在签章的过程中把签订日期的文字也打上去,这就有点坑了~ 一开始的想法是想办法定位需要签名的位置, ...
- 删除github上面的项目
1.进入github 2.点击Repositories,看到你所有的repository 3.点击进入你想要删除的repository,点击settings 4.在options选项中,下拉到底看到“ ...
- “五年经验”年薪50W分享Java程序员掌握什么技术才不会被淘汰
在这个IT系统动辄就是上亿流量的时代,Java作为大数据时代应用最广泛的语言,诞生了一批又一批的新技术,包括HBase.Hadoop.MQ.Netty.SpringCloud等等 . 一些独角兽公司以 ...
- [NOI2009] 管道取珠
sum a[i]*a[i]可以理解为两个独立但同时进行的游戏得到同一个输出序列的方案数. 设f[l,i,j]为每个游戏都已经推出了l个珠子时,第一个游戏里上边儿的管道已经推出了i个,第二个游戏中上边儿 ...